再读 Golang 圣经

收获还是不小

字符串

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

这里其实引出了我另外一个疑问,其实之前以为 % 和后面的参数列表的个数是匹配的,其实看到这也不然。真的是看见的越多回答问题越不敢肯定,你没看过事物的另外一面,又怎能妄言断定。

你可能感兴趣的:(再读 Golang 圣经)