package main

import "fmt"

func main() {
        type Person struct {
                Name string
        }
        var people = Person{Name: "mark"}

        //1.普通占位符
        //%v(相应值的默认格式)
        fmt.Printf("%v", people) //{mark}

        //%+v(打印结构体时,会添加字段名)
        fmt.Printf("%+v", people) //{Name:mark}

        //%#v(相应值的Go语法表示)
        fmt.Printf("%#v", people) //main.Person{Name:"mark"}

        //%T(相应值的类型的Go语法表示)
        fmt.Printf("%T", people) //main.Person

        //%%(字面上的百分号,并非值的占位符)
        fmt.Printf("%%") //%

        //2.布尔占位符
        //%t(true 或 false)
        fmt.Printf("%t", true) //true

        //3.整数占位符
        //%b(二进制表示)
        fmt.Printf("%b", 5) //101

        //%c(相应Unicode码点所表示的字符)
        fmt.Printf("%c", 0x4E2D) //中

        //%d(十进制表示)
        fmt.Printf("%d", 0x12) //18

        //%o(八进制表示)
        fmt.Printf("%o", 10) //12

        //%q(单引号围绕的字符字面值,由Go语法安全地转义)
        fmt.Printf("%q", 0x4E2D) //'中'

        //%x(十六进制表示,字母形式为小写a-f)
        fmt.Printf("%x", 13) //d

        //%X(十六进制表示,字母形式为小写A-F)
        fmt.Printf("%X", 13) //D

        //%U(Unicode格式:U+1234,等同于 "U+%04X")
        fmt.Printf("%U", 0x4E2D) //U+4E2D

        //4.浮点数和复数的组成部分
        //%b(无小数部分的,指数为二的幂的科学计数法)
        fmt.Printf("%b", 10.2) //5742089524897382p-49

        //%e(科学计数法,例如 -1234.456e+78)
        fmt.Printf("%e", 10.2) //1.020000e+01

        //%E(科学计数法,例如 -1234.456E+78)
        fmt.Printf("%E", 10.2) //1.020000E+01

        //%f(有小数点而无指数,例如123.456)
        fmt.Printf("%f", 10.2) //10.200000

        //%g(根据情况选择%e或%f以产生更紧凑的(无末尾的0))
        fmt.Printf("%g", 10.20) //10.2

        //%G(根据情况选择%E或%f以产生更紧凑的(无末尾的0))
        fmt.Printf("%G", 10.20+2i) //(10.2+2i)

        //5.字符串与字节切片
        //%s(输出字符串表示(string类型或[]byte))
        fmt.Printf("%s", []byte("Go语言")) //Go语言

        //%q(双引号围绕的字符串,由Go语法安全地转义)
        fmt.Printf("%q", "Go语言") //"Go语言"

        //%x(十六进制,小写字母,每字节两个字符)
        fmt.Printf("%x", "golang") //676f6c616e67

        //%X(十六进制,大写字母,每字节两个字符)
        fmt.Printf("%X", "golang") //676F6C616E67

        //6.指针
        //%p(十六进制表示,前缀0x)
        fmt.Printf("%p", &people) //0xc0420421d0
}

results matching ""

    No results matching ""