Golang

golang之内存管理make

介绍 读《network programming with golang》这本书,墙裂推荐。读这本书之前我并没有系统的学过这门语言。读到第十章,Dictionary内存分配的代码让我觉得有些困惑,为什么一个定义长度为100的数组不会越界 问题 书中代码如下 v := make([]*Entry, 0, 100) for n := 0; n < len(d.Entries); n++ { de := d.Entries[n] if de.Pinyin == py { v = append(v, de) } } 这段代码,看起来就是在最初创建了一个长度为100的数组,而后不断的通过append给它添加新的元素。添加多少个元素是不确定的,那么如果添加101个元素,会不会index of range呢? 实验 带着这个问题我做了如下实验。实验代码如下 package main import "fmt" func main(){ array := make([]int, 0, 10) // 越界错误: index out of range //array[0] = 1 // ok 可以访问 array = array[0:1] array[0] = 1 // 越界错误: in...
执行时间: 1714089450992.5 毫秒