Go学习记录

Go 切片的 append 操作总结https://segmentfault.com/a/1190000020170529

1、数组和slice的区别

  1. 声明数组时,⽅括号内写明了数组的⻓度或者...,
  2. 声明slice时候,⽅括号内为空 作为函数参数时,数组传递的是数组的副本,⽽slice传递的是指针。

array 类型 array是固定⻓度的数组,使⽤前必须确定数组⻓度

golang array 特点:

  • golang中的数组是值类型,也就是说,如果你将⼀个数组赋值给另外⼀个数组,那么,实际上就是整个数组拷⻉了⼀份 如果golang中的数组作为函数的参数,那么实际传递的参数是⼀份数组的拷⻉,⽽不是数组的指针 array的⻓度也是Type的⼀部分,这样就说明[10]int和[20]int是不⼀样的。
  • slice类型 slice是⼀个引⽤类型,是⼀个动态的指向数组切⽚的指针。 slice是⼀个不定⻓的,总是指向底层的数组array的数据结构。

2、

<1>、两种形式new(T)&T{}完全等效:两者都分配一个零T并返回一个指向该已分配内存的指针。唯一的区别是&T {}对builtin types like int不起作用;您只能执行new(int)

<2>、struct返回的是一个结构体  new 返回的是一个指针

          1.new(T)创建一个没有任何数据的类型为T的实例,并返回该实例的指针;
         2.make(T, args)只能创建 slice、map和channel,并且返回一个有初始值args(非零)的T类型的实例,非指针。

猜你喜欢

转载自blog.csdn.net/yu1336199790/article/details/109027651