2 回答

TA貢獻1805條經驗 獲得超10個贊
首先,切片已經是“可變大小”:[100]int并且[...]int是數組類型定義。
[]int 是切片的正確語法,您可以將函數實現為:
func BuildSlice(size int) []int {
return make([]int, size)
}
這將返回具有所需大小的零值切片,類似于您的數組版本所做的。

TA貢獻1802條經驗 獲得超6個贊
Go 編程語言規范
制作切片、貼圖和通道
內置函數 make 接受類型 T,它必須是切片、映射或通道類型,可選地后跟特定于類型的表達式列表。它返回一個類型為 T(不是 *T)的值。內存按照初始值部分中的描述進行初始化。
Call Type T Result
make(T, n) slice slice of type T with length n and capacity n
make(T, n, m) slice slice of type T with length n and capacity m
大小參數 n 和 m 必須是整數類型或無類型。常量大小參數必須是非負的并且可以由 int 類型的值表示。如果 n 和 m 都提供并且是常數,則 n 不得大于 m。如果在運行時 n 為負數或大于 m,則會發生運行時恐慌。
s := make([]int, 10, 100) // slice with len(s) == 10, cap(s) == 100
s := make([]int, 1e3) // slice with len(s) == cap(s) == 1000
s := make([]int, 1<<63) // illegal: len(s) is not representable by a value of type int
s := make([]int, 10, 0) // illegal: len(s) > cap(s)
例如,
package main
import "fmt"
func main() {
s := make([]int, 7, 42)
fmt.Println(len(s), cap(s))
t := make([]int, 100)
fmt.Println(len(t), cap(t))
}
輸出:
7 42
100 100
- 2 回答
- 0 關注
- 396 瀏覽
添加回答
舉報