常用库
fmt
Print, Println, Printf
用法:
fmt.Print("hello world\n")
fmt.Println("hello world")
fmt.Printf("hello %s\n", "world")
它们最终都调用Fpintf。
- Fprint。将内容输出到一个io.Writer接口类型的变量w中。一般用在写文件中。
- Sprint。把传入的数据生成并返回一个字符串。
- Errorf。根据format参数生成格式化字符串并返回一个包含该字符串的错误。
格式化占位符:
| 占位符 | 说明 |
|---|---|
| %v | 值的默认格式表示 |
| %+v | 类似%v,但输出结构体时会添加字段名 |
| %#v | 值的Go语法表示 |
| %T | 打印值的类型 |
| %% | 打印出一个百分号 |
| %t | true或false |
| %s | 直接输出字符串或者[]byte |
| %q | 该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示 |
| %x | 对字符串每个字节,用两字符十六进制数表示(使用a-f) |
| %X | 对字符串每个字节,用两字符十六进制数表示(使用A-F) |
| %b | 表示为二进制 |
| %c | 该值对应的unicode码值 |
| %d | 表示为十进制 |
| %o | 表示为八进制 |
| %x | 将数字表示为十六进制,使用a-f |
| %X | 数字表示为十六进制,使用A-F |
| %U | 表示为Unicode 格式:U+1234,等价于”U+%04X”%q该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 |
| %p | 指针base 16表示法,带前导0x |
type st struct {
name string
id int32
}
func main() {
fmt.Printf("int %v,string %v,struct %v\n", 123, "abc", st{"name", 1})
//int 123,string abc,struct {name 1}
fmt.Printf("struct %+v\n", st{"name", 1})
//struct {name:name id:1}
fmt.Printf("int %#v,string %#v,struct %#v\n", 123, "abc", st{"name", 1})
//int 123,string "abc",struct main.st{name:"name", id:1}
fmt.Printf("int %T,string %T,struct %T\n", 123, "abc", st{"name", 1})
//int int,string string,struct main.st
fmt.Printf("%%\n")
//%
fmt.Printf("false: %t,true %t\n", false, true)
//false: false,true true
fmt.Printf("%s\n", "hello world\n")
//hello world
//
fmt.Printf("%q\n", "hello world\n")
//"hello world\n"
fmt.Printf("%x\n", "abcdef")
//616263646566
fmt.Printf("%X\n", "ABCDEF")
//414243444546
fmt.Printf("%x\n", 15)
//f
fmt.Printf("%X\n", 15)
//F
fmt.Printf("%b\n", 15)
//1111
}
宽度由动词前面的可选十进制数字指定。如果不存在,则宽度是表示该值所需的任何值。在(可选)宽度之后指定精度,后面跟着一个十进制数。如果没有句点,则使用默认精度。例如:
%f default width, default precision
%9f width 9, default precision
%.2f default width, precision 2
%9.2f width 9, precision 2
%9.f width 9, precision 0
宽度和精度是以 Unicode 代码点为单位测量的,即符文。
对于浮点值,宽度设置字段的最小宽度,精度设置小数点后的位数(如果适用)。 例如:
fmt.Printf("%6.2f |", 1.2)
// 1.20 |
fmt.Scan
-
从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符
-
函数返回成功扫描的数据个数
n和遇到的任何错误error
fmt.Scanf
实际使用的是Fscanf,以format定义的格式来进行输入。
fmt.Scanln
Scanln函数会一次性读取多个输入值,并将它们存储到传入的参数中。使用Scanln函数时,需要提供与输入值对应的变量作为参数。
fmt.Fsanf
将内容从一个io.Reader接口类型的变量r中读取出来,将连续的以空格分隔的值存储到由格式确定的连续的参数中。