×

Falcon

  • FalconChen
    2018-09-01 19:45
    "如果在创建切片时设置切片的容量和长度一样,就可以强制让新切片的第一个append操作创建新的底层数组,与原有的底层数组分离。新切片与原有的底层数组分离后,可以安全地进行后续修改,"#viaKindle#
  • FalconChen
    2018-09-01 18:33
    "相对于数组而言,使用切片的一个好处是,可以按需增加切片的容量。Go语言内置的append函数会处理增加长度时的所有操作细节。"#viaKindle#
  • FalconChen
    2018-09-01 18:17
    "在Go语言里,nil切片是很常见的创建切片的方法。nil切片可以用于很多标准库和内置函数。在需要描述一个不存在的切片时,nil切片会很好用。例如,函数要求返回一个切片但是发生异常的时候("#viaKindle#
  • FalconChen
    2018-09-01 18:16
    "记住,如果在[]运算符里指定了一个值,那么创建的就是数组而不是切片。只有不指定值的时候,才会创建切片,"#viaKindle#
  • FalconChen
    2018-09-01 18:00
    "虽然Go语言自己会处理这个复制操作,不过还有一种更好且更有效的方法来处理这个操作。可以只传入指向数组的指针,这样只需要复制8字节的数据而不是8 MB的内存数据到栈上,"#viaKindle#
  • FalconChen
    2018-09-01 17:58
    "根据内存和性能来看,在函数间传递数组是一个开销很大的操作。在函数之间传递变量时,总是以值的方式传递的。如果这个变量是一个数组,意味着整个数组,不管有多长,都会完整复制,并传递给函数。"#viaKindle#
  • FalconChen
    2018-09-01 17:37
    "数组变量的类型包括数组长度和每个元素的类型。只有这两部分都相同的数组,才是类型相同的数组,才能互相赋值,"#viaKindle#
  • FalconChen
    2018-09-01 15:02
    "数组是一种非常有用的数据结构,因为其占用的内存是连续分配的。由于内存连续,CPU能把正在使用的数据缓存更久的时间。而且内存连续很容易计算索引,可以快速迭代数组里的所有元素。数组的类型信息可以提供每次访问一个元素时需要在内存中移动的距离。既然数组的每个元素类型相同,又是连续分配,就可以以固定速度索引数组中的任意数据,速度非常快。"#viaKindle#
  • FalconChen
    2018-09-01 14:57
    "gb工程与Go官方工具链(包括go get)并不兼容。因为gb不需要设置GOPATH,而Go工具链无法理解gb工程的目录结构,所以无法用Go工具链构建、测试或者获取代码。构建(如代码清单3-16所示)和测试gb工程需要先进入$PROJECT目录,并使用gb工具。"#viaKindle#
  • FalconChen
    2018-09-01 14:49
    "godep和vender这种社区工具已经使用第三方(verdoring)导入路径重写这种特性解决了依赖问题。其思想是把所有的依赖包复制到工程代码库中的目录里,然后使用工程内部的依赖包所在目录来重写所有的导入路径。"#viaKindle#