再读 Golang 圣经
2022-04-30 本文已影响0人
追风骚年
收获还是不小
字符串
fmt.Println(string(0x03c0)) // "π"
code 可以去 unicode.org 查询
常量
const (
a = 1
b
c = 2
d
)
fmt.Println(a, b, c, d) // "1 1 2 2"
高精度常量
const (
_ = 1 << (10 * iota)
KiB // 1024
MiB // 1048576
GiB // 1073741824
TiB // 1099511627776 (exceeds 1 << 32)
PiB // 1125899906842624
EiB // 1152921504606846976
ZiB // 1180591620717411303424 (exceeds 1 << 64)
YiB // 1208925819614629174706176
)
fmt.Println(YiB) // panic
fmt.Println(YiB/ZiB) // "1024"
切片初始化
months := [...]string{1: "January", /* ... */, 12: "December"}
Q2 := months[4:7]
fmt.Println(Q2)
你一定想用 map 表示,其实 key 为 int 的这种用切片更方便
字符串 padding
fmt.Printf("%10s\n", "aaa") // 字符宽度为 10,文字右对齐
fmt.Printf("%-10s\n", "aaa") // 字符宽度为 10,负号可以将文字左对齐
fmt.Printf("%*s%s\n", 7, "", "aaa") // %*s 插入任意宽度空格,后接入一个填充空格
fmt.Printf("%*s%s\n", 7, "bb", "aaa") // %*s 插入任意宽度空格,后接入一个填充右对齐字符"bb"
fmt.Printf("%-*s%s\n", 7, "bb", "aaa") // %*s 插入任意宽度空格,后接入一个负号填充左对齐字符"bb"
// aaa
//aaa
// aaa
// bbaaa
//bb aaa
这里其实引出了我另外一个疑问,其实之前以为 % 和后面的参数列表的个数是匹配的,其实看到这也不然。真的是看见的越多回答问题越不敢肯定,你没看过事物的另外一面,又怎能妄言断定。