Golang 20_Golang输入输出与io

一、输入输出

1.1 格式化输出

  • 在 Go 中,格式化的输入与输出,都需要使用到格式化占位符。 golang格式化输出:https://blog.csdn.net/hanjinjuan/article/details/124912572

常见占位符

占位符 代码示例 代码输出 功能
%T 类型占位符
%v 值占位符
%d 整数占位符
%f 浮点占位符
%c 字符占位符
%s 字符串的占位符

布尔占位符

占位符 代码示例 代码输出 功能
%t Printf("%t", true) true 输出true 或 false

整数占位符

占位符 代码示例 代码输出 功能
%b Printf("%b", 4) 二进制表示
%c Printf("%c", 0x82d7) 相应Unicode码点所表示的字符
%d Printf("%d", 0x12) 十进制表示
%o Printf("%o", 10) 八进制表示
%q Printf("%q", 0x4E2D) 单引号围绕的字符字面值,由Go语法安全地转义
%x Printf("%x", 13) 十六进制表示,字母形式为小写 a-f
%X Printf("%X", 13) 十六进制表示,字母形式为大写 A-F
%U Printf("%U", 0x4E2D) Unicode格式:U+1234,等同于 “U+%04X”

浮点数

占位符 代码示例 代码输出 功能
%b fmt.Printf("%b", 68.10) 4792111478498918p-46 无小数部分、二进制指数的科学计数法,如-123456p-78;参见strconv.FormatFloat
%e fmt.Printf("%e", 68.10) 6.810000e+01 科学计数法,如-1234.456e+78
%E fmt.Printf("%E", 68.10) 6.810000E+01 科学计数法,如-1234.456E+78
%f fmt.Printf("%f", 68.10) 68.100000 有小数部分但无指数部分,如123.456
%F fmt.Printf("%F", 68.10) 68.100000 等价于%f
%g fmt.Printf("%g", 68.10) 68.1 根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
%G fmt.Printf("%G", 68.10) 68.1 根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)

字符串

占位符 代码示例 代码输出 功能
%s fmt.Printf("%s", “I’m a girl”) I’m a girl 字符串或切片的无解译字节
%q fmt.Printf("%q", “I’m a girl”) “I’m a girl” 双引号围绕的字符串,由Go语法安全地转义
%x fmt.Printf("%x", “I’m a girl”) 49276d2061206769726c 十六进制,小写字母,每字节两个字符
%X fmt.Printf("%X", “I’m a girl”) 49276D2061206769726C 十六进制,大写字母,每字节两个字符

结构体占位符

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main
import "fmt"

type Human struct {
    Name string
}

func main() {
    people := Human{Name: "xiandanhuang"}
    fmt.Printf("people: %v\n", people)
    fmt.Printf("people: %+v\n", people)
    fmt.Printf("people: %#v\n", people)
    fmt.Printf("people: %T\n", people)
    fmt.Printf("people: %%\n")
    fmt.Printf("", people)
}

// 输出
people: {xiandanhuang}
people: {Name:xiandanhuang}
people: main.Human{Name:"xiandanhuang"}
people: main.Human
people: %
%!(EXTRA main.Human={xiandanhuang})
占位符 代码示例 代码输出 功能
%v Printf("%v", people) {xiandanhuang} 获取数据的值
%+v Printf("%+v", people) {Name:xiandanhuang} 获取数据的值,如果结构体,会携带字段名
%#v Printf("#v", people) main.Human{Name:“xiandanhuang”} 获取数据的值,如果是结构体,会携带结构体名和字段名
%T Printf("%T", people) main.Human 获取数据类型
%% Printf("%%") % 字面上的一个百分号