Go內建函式len()
與cap()
用於slice的差別如下。
len()
取得slice元素的個數。
cap()
取得slice第一個元素於代表的array中的索引起算到最後的長度。
例如下面宣告一個字串陣列arr
長度為5,雖然表面上看起來只宣告了4個元素,但實際上有5個,因為最後一個沒宣告則為字串的零值即空字串(註解以_
表示)。
Slice變數s1
從陣列arr
索引1到3(不含)取得兩個元素為b, c
,所以len(s1)
為2。而用cap(s1)
取得的值為s1
第一個元素b
於arr
的索引起算到最後一個的長度,即b, c, d, _
為4。
Slice變數s2
從s2
索引1到最後取得的元素為c
,所以len(s2)
為1。而用cap(s2)
取得的值為s2
第一個元素c
於arr
的索引起算到最後一個的長度,即c, d, _
為3。
main.go
package main
import "fmt"
func main() {
arr := [5]string{"a", "b", "c", "d"}
fmt.Println(arr) // [a b c d _]
fmt.Println(len(arr)) // 5
s1 := arr[1:3]
fmt.Println(s1) // [b c]
fmt.Println(len(s1)) // 2
fmt.Println(cap(s1)) // 4 [b c d _]
s2 := s1[1:] // [c]
fmt.Println(len(s2)) // 1
fmt.Println(cap(s2)) // 3 [c d e]
}
沒有留言:
張貼留言