golang fmt包Printf函数测试实例

package main

import (
        "fmt"
)

//整数
func intPrintf() {
        var a int = 162
        fmt.Println("----------")
        fmt.Println("整数类型")
        // %b 表示为二进制
        fmt.Printf("表示为二进制%b\n", a)
        // %d 表示为10进制
        fmt.Printf("表示为十进制%d\n", a)
        // %o 表示为八进制
        fmt.Printf("表示为八进制%o\n", a)
        // %x 表示为16进制 使用a-f
        fmt.Printf("表示为十六进制%x\n", a)
        // %X 表示为16进制 使用A-F
        fmt.Printf("表示为十六进制%X\n", a)
        //%c  表示为unicode码
        //同C语言%c不同的是c语言用来输出符合ansi码的,GO语言输出范围更广
        fmt.Printf("表示为unicode码值%c\n", a)
        //%U 表示为unicode格式
        fmt.Printf("表示为Unicode格式%U\n", a)
        //%q 转化成GO语法字符字面值 即对应的码值加上单引号
        fmt.Printf("表示为字符字面值%q\n", a)
}

func pointPrintf() {
        fmt.Println("---------")
        fmt.Println("指针类型")
        var a int = 10
        // %p 十六位进制的指针地址
        fmt.Printf("指针地址%%p格式%p\n", &a)
}
func boolPrintf() {
        fmt.Println("---------")
        fmt.Println("布尔类型")
        var a bool = true
        //%t  布尔类型
        fmt.Printf("布尔类型%%t格式%t\n", a)
}
func stringPrintf() {
        fmt.Println("---------")
        fmt.Println("字符串类型")
        s_value := "string"
        b_value := []byte("byte")
        //%s 直接输出字符串或者[]byte
        fmt.Printf("字符串%%s格式%s\n", s_value)
        fmt.Printf("[]byte%%s格式%s\n", b_value)
        //%q 输出为GO字符字面值
        fmt.Printf("字符串%%q格式%q\n", s_value)
        //%x 每个字节用两字符十六进制数表示(使用a-f)
        fmt.Printf("字符串%%x格式%x\n", s_value)
        //%X 每个字节用两字符十六进制数表示(使用A-F)
        fmt.Printf("字符串%%X格式%X\n", s_value)
}



func floatPrintf() {
        fmt.Println("---------")
        fmt.Println("浮点数")
        f := 123456.123456
        // %f 默认宽度,默认精度
        fmt.Printf("%%f格式%f\n", f)
        // %5f 宽度为5,默认精度
        fmt.Printf("%%5f格式%5f\n", f)
        //.2f  默认宽度,精度2
        fmt.Printf("%%.2f格式%.2f\n", f)
        //%5.2 宽度为5,精度为2
        fmt.Printf("%%5.2格式%5.2f\n", f)
        //%5.f 宽度为5, 精度为0
        fmt.Printf("%%5.f格式%5.f\n", f)
}

type people struct {
        name string
        age  int
}

func commonPrintf() {
        fmt.Println("---------")
        fmt.Println("通用类型")
        //初始化各类型变量
        var i int = 1
        var f32 float32 = 32.32
        var f64 float64 = 64.64
        var s string = "string"
        var b bool = true
        var ary [3]int = [3]int{1, 2, 3}
        var slice []int = []int{1, 2, 3}
        var byteValue []byte = []byte("byte")
        var mapValue map[string]string = map[string]string{
                "key": "value",
        }
        var p people = people{name: "test", age: 1}
        //%v  值的默认格式表示
        fmt.Println("----------")
        fmt.Println("%v")
        fmt.Printf("int类型%%v格式%v\n", i)
        fmt.Printf("float32类型%%v格式%v\n", f32)
        fmt.Printf("float64类型%%v格式%v\n", f64)
        fmt.Printf("string类型%%v格式%v\n", s)
        fmt.Printf("bool类型%%v格式%v\n", b)
        fmt.Printf("数组类型%%v格式%v\n", ary)
        fmt.Printf("切片类型%%v格式%v\n", slice)
        fmt.Printf("map类型%%v格式%v\n", mapValue)
        fmt.Printf("[]byte类型%%v格式%v\n", byteValue)
        fmt.Printf("结构体类型%%v格式%v\n", p)
        //%+v 和%v唯一的区别在输出结构体时会输出字段名
        fmt.Println("----------")
        fmt.Println("%+v")
        fmt.Printf("结构体类型%%+v格式%+v\n", p)
        //%#v 值的GO语法表示(和%v相比在输出复合类型时,会输出类型的信息)
        fmt.Println("----------")
        fmt.Println("%#v")
        fmt.Printf("int类型%%#v格式%#v\n", i)
        fmt.Printf("float32类型%%#v格式%#v\n", f32)
        fmt.Printf("float64类型%%#v格式%#v\n", f64)
        fmt.Printf("string类型%%#v格式%#v\n", s)
        fmt.Printf("bool类型%%#v格式%#v\n", b)
        fmt.Printf("数组类型%%#v格式%#v\n", ary)
        fmt.Printf("切片类型%%#v格式%#v\n", slice)
        fmt.Printf("map类型%%#v格式%#v\n", mapValue)
        fmt.Printf("[]byte类型%%#v格式%#v\n", byteValue)
        fmt.Printf("结构体类型%%#v格式%#v\n", p)
        //%T 值的类型GO语法表示
        fmt.Println("----------")
        fmt.Println("%T")
        fmt.Printf("int类型%%T格式%T\n", i)
        fmt.Printf("float32类型%%T格式%T\n", f32)
        fmt.Printf("float64类型%%T格式%T\n", f64)
        fmt.Printf("string类型%%T格式%T\n", s)
        fmt.Printf("bool类型%%T格式%T\n", b)
        fmt.Printf("数组类型%%T格式%T\n", ary)
        fmt.Printf("切片类型%%T格式%T\n", slice)
        fmt.Printf("map类型%%T格式%T\n", mapValue)
        fmt.Printf("[]byte类型%%T格式%T\n", byteValue)
        fmt.Printf("结构体类型%%T格式%T\n", p)

}

func main() {
        intPrintf()
        pointPrintf()
        boolPrintf()
        stringPrintf()
        floatPrintf()
        commonPrintf()

}

输出结果:

----------
整数类型
表示为二进制10100010
表示为十进制162
表示为八进制242
表示为十六进制a2
表示为十六进制A2
表示为unicode码值¢
表示为Unicode格式U+00A2
表示为字符字面值'¢'
---------
指针类型
指针地址%p格式0xc42000e2f0
---------
布尔类型
布尔类型%t格式true
---------
字符串类型
字符串%s格式string
[]byte%s格式byte
字符串%q格式"string"
字符串%x格式737472696e67
字符串%X格式737472696E67

---------
浮点数
%f格式123456.123456
%5f格式123456.123456
%.2f格式123456.12
%5.2格式123456.12
%5.f格式123456
---------
通用类型
----------
%v
int类型%v格式1
float32类型%v格式32.32
float64类型%v格式64.64
string类型%v格式string
bool类型%v格式true
数组类型%v格式[1 2 3]
切片类型%v格式[1 2 3]
map类型%v格式map[key:value]
[]byte类型%v格式[98 121 116 101]
结构体类型%v格式{test 1}
----------
%+v
结构体类型%+v格式{name:test age:1}
----------
%#v
int类型%#v格式1
float32类型%#v格式32.32
float64类型%#v格式64.64
string类型%#v格式"string"
bool类型%#v格式true
数组类型%#v格式[3]int{1, 2, 3}
切片类型%#v格式[]int{1, 2, 3}
map类型%#v格式map[string]string{"key":"value"}
[]byte类型%#v格式[]byte{0x62, 0x79, 0x74, 0x65}
结构体类型%#v格式main.people{name:"test", age:1}
----------
%T
int类型%T格式int
float32类型%T格式float32
float64类型%T格式float64
string类型%T格式string
bool类型%T格式bool
数组类型%T格式[3]int
切片类型%T格式[]int
map类型%T格式map[string]string
[]byte类型%T格式[]uint8
结构体类型%T格式main.people
 

猜你喜欢

转载自blog.csdn.net/u014270740/article/details/89322814