1. 程式人生 > >golang slice

golang slice

end info 即使 inf clas lang ack 讀取 fmt

golang 在for range一個slice時,會讀出其cap長度。在for的過程中,即使動態append該slice,最終for也會在第一次讀取的cap長度處停止。

package main

import (
    "fmt"
)

func main() {
    s := make([]string, 3)
    s[0]="a"
    s[1]="b"
    s[2]="c"
    
    for _,i := range s {
        s = append(s, s[0])
        fmt.Println("len"
, len(s)) fmt.Println("cap", cap(s)) fmt.Println("i", i) fmt.Println("s", s) } s = append(s, "e") fmt.Println(">>>len", len(s)) fmt.Println(">>>cap", cap(s)) fmt.Println(">>>s", s) }

輸出為:

len 4
cap 6
i a
s [a b c a]
len 5
cap 6
i b
s [a b c a a]
len 6
cap 6
i c
s [a b c a a a]
>>>len 7
>>>cap 12
>>>s [a b c a a a e]
 

golang slice