func main() { xs := []int{1, 2, 3} var cmds []func() for _, x := range xs { cmds = append(cmds, func() { fmt.Println(x) }) fmt.Println("append: " + strconv.Itoa(x)) for _, cmd := range cmds { fmt.Print("func eval: ") cmd() } fmt.Println() } }
type slice struct { head int, tail int, data []interface{} } のようになっていて、先頭と最後へのポインタと配列へのポインタを持っていて、hoge[1:5]のようにslice演算をするとheadとtailだけ書き換えて、データはそのまま。 また、append関数はdataのキャパシティを超えた場合にreallocのようなことをしてデータ容量を拡張する。 package main import ( "fmt" ) var P = fmt.Println func main() { a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} b := a[0:5] a[0] = 100 c := append(b, 200) //aの6つ目のデータを上書き P("a", a) //a [100 2 3 4 5 2
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く