zoukankan      html  css  js  c++  java
  • Golang的格式化输出fmt.Printf

    Golang的格式化输出 和 C语言的标准输出基本一样,但是增加了一些针对Golang语言的特有数据结构的格式化输出方式。

    格式化打印中的常用占位符:

    格式化打印占位符:
    			%v,原样输出
    			%T,打印类型
    			%t,bool类型
    			%s,字符串
    			%f,浮点 
                            %.2f 保留2位小数点
    			%d,10进制的整数
    			%b,2进制的整数
    			%o,8进制
    			%x,%X,16进制
    				%x:0-9,a-f
    				%X:0-9,A-F
    			%c,打印字符
    			%p,打印地址
    			。。。
    

    示例代码:

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	a := 100           //int
    	b := 3.14          //float64
    	c := true          // bool
    	d := "Hello World" //string
    	e := `Ruby`        //string
    	f := 'A'
    	fmt.Printf("%T,%b
    ", a, a)
    	fmt.Printf("%T,%f
    ", b, b)
    	fmt.Printf("%T,%t
    ", c, c)
    	fmt.Printf("%T,%s
    ", d, d)
    	fmt.Printf("%T,%s
    ", e, e)
    	fmt.Printf("%T,%d,%c
    ", f, f, f)
    	fmt.Println("-----------------------")
    	fmt.Printf("%v
    ", a)
    	fmt.Printf("%v
    ", b)
    	fmt.Printf("%v
    ", c)
    	fmt.Printf("%v
    ", d)
    	fmt.Printf("%v
    ", e)
    	fmt.Printf("%v
    ", f)
    
    	var balance  = [5]float32{1000.2,2.4,3.4,7.0,50.7} 
    	balance[2] = 80.0
    	fmt.Printf("%T,%.2f",balance[2],balance[2]) //float32,80.00
    
    }
    

    运行结果:

    以下就是实例:

    
    package main
    import "fmt" //一定不要忘了
     
    type point struct{
        x,y int
    }
     
    func test(i , j int) int{ return i+j;}
     
    func main(){
        p := point{1,2}
     
        fmt.Printf("%d
    ",p)    // {1 2}
         
        fmt.Printf("%+v
    ",p)   // {x:1 y:2}
         
        fmt.Printf("%#v
    ",p)   // main.point{x:1, y:2}
     
        //输出类型
        fmt.Printf("%T
    ",p)    // main.point
     
        //输出函数签名
        fmt.Printf("%T
    ",test) //func(int ,int) int
     
        //输出bool值
        flag := true
        fmt.Printf("%t
    ",flag) // true
         
        //尝试将一个字符串作为参数来输出bool值,不要尝试这样做
        fmt.Printf("%t
    ","true") //%!t(string=true)  
         
        //输出十进制形式输出
        fmt.Printf("%d
    ",123)      // 123
         
        //输出一个字符,参数对应ASCII码
        fmt.Printf("%c
    ",98)       // b
         
        //输出一个整数的二进制形式的值
        fmt.Printf("%b
    ",98)       // 1100010
     
        //输出一个字符的二进制形式的值
        fmt.Printf("%b
    ",'b')      // 1100010
     
        //如果参数是数字,则以十六进制形式输出
        fmt.Printf("%x
    ",456)      // 1c8
         
        //如果参数是字符串,则打印字符串的每一个字符的ASCII码
        fmt.Printf("%x
    ","hex this") // 6865782074686973 
         
        //浮点数形式输出,注意小数位数为6位
        fmt.Printf("%f
    ",78.53)    // 78.530000   
         
        //注意这里前后不对应,不会报错,但是不会自动转换
        fmt.Printf("%d
    ",78.53)    // %!d(float64=78.53)
         
        //科学计数法的形式,注意参数要为小数,不为小数,可以乘1.0
        fmt.Printf("%e
    ",123400000000.0)   //1.234000e+11 注意参数为小数
         
        //科学计数法的形式,注意参数要为小数,不为小数,可以乘1.0
        fmt.Printf("%E
    ",123000000000.0)   //1.234000E+11
         
        //输出字符串
        fmt.Printf("%s
    ",""ddadjfaskdafjasfsaf")  //"ddadjfaskdafjasfsaf
         
        //保留字符串两端的双引号
        fmt.Printf("%q
    ",""dddddddd"")   // ""dddddddd""
         
        //输出指针(地址)的值
        fmt.Printf("%p
    ",&p) //0xc420012090
         
        //最小宽度为6,默认右对齐,不足6位时,空格补全,超过6位时,不会截断
        fmt.Printf("|%6d|%6d|
    ",12,1234567) // |    12|1234567|
         
        //最小6个宽度(包含小数点),2位小数,超过6位时,不会截断
        fmt.Printf("|%6.2f|%6.2f|
    ",12,222.333) // |%!f(int=    12)|222.33|
         
        //使用 - 表示左对齐
        fmt.Printf("|%-6.2f|%-6.2f|
    ",12.2,3.33) //|12.20 |3.33  |   
         
        //最小6个宽度,右对齐,不足6个时,空格补齐,超过6位时,不会截断
        fmt.Printf("|%6s|%6s|
    ","foo","abcdefgg") //|   foo|abcdefgg|
         
        ////最小6个宽度,右对齐,不足6个时,空格补齐,超过6位时,不会截断
        fmt.Printf("|%-6s|%-6s|
    ","foo","abcdeefgth") //|foo   |abcdeefgth|
     
        //不会输出内容,相反,会将内容以字符串的形式返回
        s:= fmt.Sprintf("a %s","string")
        fmt.Println(s)  //a string
    }
    


    package main
    
    import "fmt"
    
    func main() {
    	//大小写的方式显示十六进制整数
    	fmt.Printf("%d %x %X %o %b 
    ", 18, 11, 12, 18, 18) //18 b C 22 10010
    
    	//打印浮点数 .2f保留小数点后2位
    	fmt.Printf("%.2f
    ", 18.1) //18.10
    
    	//打印bool型 布尔值
    	fmt.Printf("%t
    ", true) // true
    
    	// 打印字符
    	fmt.Printf("%c
    ", 65) //  A
    
    	// 输入字符串 %q带号字符串
    	fmt.Printf("%s  %q 
    ", "您好", "您好") //  您好  "您好"
    
    	// 内置格式 原样输出
    	fmt.Printf("%v 
    ", "您好") //  您好
    
    	// 类型
    	fmt.Printf("%T 
    ", "您好") //  string
    
    	//内存地址
    	i := 5
    	fmt.Printf("%p 
    ", i) // %!p(int=5)
    	fmt.Printf("%p 
    ", &i) // 0xc0000100d0
    
    	//输出%  要用两个%
    	fmt.Printf("花费%d%%总钱数
    ",50) //花费50%总钱数
    
    	//换行和缩进
    	fmt.Printf("你好吗?
    	我很	好!")
    	//你好吗?
    	//		我很		好!
    }
    
    

  • 相关阅读:
    [ZOJ1610]Count the Colors
    浅谈算法——线段树之Lazy标记
    浅谈算法——线段树
    [HEOI2013]Segment
    [JSOI2008]Blue Mary开公司
    [JSOI2016]扭动的回文串
    [BZOJ3790]神奇项链
    [BZOJ2565]最长双回文串
    [BZOJ2160]拉拉队排练
    [POI2010]Antisymmetry
  • 原文地址:https://www.cnblogs.com/haima/p/11640122.html
Copyright © 2011-2022 走看看