More types: structs, slices, and maps.中間有一大部分都是介紹 slice 的各種用法,沒有什麼特別的語法,值得一提的是,看起來是更改起點位置就會變動到 slice 本身的 cap,就將 cap 理解成 pointer 到 array 結尾的長度吧!
package main
import "fmt"
func main() {
a := make([]int, 5)
printSlice("a", a)
b := make([]int, 0, 5)
printSlice("b", b)
c := b[:2]
printSlice("c", c)
d := c[2:5]
printSlice("d", d)
}
func printSlice(s string, x []int) {
fmt.Printf("%s len=%d cap=%d %v\n",
s, len(x), cap(x), x)
}
a len=5 cap=5 [0 0 0 0 0]
b len=0 cap=5 []
c len=2 cap=5 [0 0]
d len=3 cap=3 [0 0 0]
來寫看看官方提供的練習,盡量用到一些 built-in,不然遲早會忘記:
package main
import "golang.org/x/tour/pic"
func Pic(dx, dy int) [][]uint8 {
s := make([][]uint8, dy)
for y := 0; y < dy; y++{
ss := make([]uint8, dx)
for x := range ss{
ss[x] = uint8(x^y)
}
s[y] = ss
}
return s
}
func main() {
pic.Show(Pic)
}
用 XOR 決定值會出現這樣一個圖形,有一種理科的美