我正在学习戈兰语,同时使用以下代码练习切片:package mainimport "fmt"func main() { var count int var subject string subjects := make([]string, 0) fmt.Print("Enter total number of subjects:") fmt.Scan(&count) for count != 0 { fmt.Print("\n\nEnter subject name: ") fmt.Scan(&subject) subjects = append(subjects, subject) fmt.Printf("\nlen=%d \ncap=%d \n%v\n", len(subjects), cap(subjects), subjects) count-- }}以下是结果,我得到:输入主题名称:物理len=4 帽=4 [印地语英语数学物理]输入主题名称:地理位置len=5 cap=8 [印地语 英语 数学 物理 地理]为什么容量在5日翻倍,以及如何按适当的顺序增加容量
1 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
在这种情况下,“适当顺序”不适用。Go 片由一个数组支持,每次达到容量时附加到该数组时,都需要复制该数组。通过制作更大容量的数组,Go试图最大限度地减少许多复制操作,从而使功能的性能更高。append
如果您事先知道许多元素,则可以使用它来设置初始容量:
fmt.Print("Enter total number of subjects:")
fmt.Scan(&count)
subjects := make([]string, 0, count)
Go 不会增大底层阵列,除非您超过初始容量。
- 1 回答
- 0 关注
- 54 浏览
添加回答
举报
0/150
提交
取消