go内置函数

append函数

  1. 用法
    • append主要用于给某个切片(slice)追加元素
    • 如果该切片存储空间(cap)足够,就直接追加,长度(len)变长;如果空间不足,就会重新开辟内存,并将之前的元素和新的元素一同拷贝进去
    • 第一个参数为切片,后面是该切片存储元素类型的可变参数
    • 第二个参数也可以直接写另一个切片,将它里面所有元素拷贝追加到第一个切片后面。要注意的是,这种用法函数的参数只能接收两个slice,并且末尾要加三个点
    • 还有种特殊用法,将字符串当作[]byte类型作为第二个参数传入
    • append函数返回值必须有变量接收,不然编译器会报错
  2. 示例
var s = make([]int, 3, 5)
f.Printf("%p", s)
f.Println()
s = append(s, 1)

slice := append([]int{1,2,3},[]int{4,5,6}...)
fmt.Println(slice) //[1 2 3 4 5 6]

bytes := append([]byte("hello"),"world"...)

make和new函数


  1. new函数
    • new 是内建函数,函数原型为
    • 函数原型

func new(Type) *Type

  • 传递给new 函数的是一个类型,不是一个值。返回值是 指向这个新分配的零值的指针。
  • make函数
    • 它的函数原型 比 new 多了一个(长度)参数,返回值也不同。
      func make(Type, size IntegerType) Type
    • 第一个参数是一个类型,第二个参数是长度,返回值是一个类型
    • 内建函数 make 分配并且初始化 一个 ==slice==, 或者 ==map== 或者 ==chan== 对象。 并且只能是这三种对象。
    • 第一个参数是 类型,不是一个值。但是make的返回值就是这个类型(即使一个引用类型),而不是指针。 具体的返回值,依赖具体传入的类型。
  • 总结
    • new 的作用是 初始化 一个指向类型的指针 (*T), make 的作用是为 slice, map 或者 channel 初始化,并且返回引用 T
    • ==数组【普通方式创建】==,==数组指针【new】==,==切片【make】==的概念
  • 猜你喜欢

    转载自blog.csdn.net/wangzhanzheng/article/details/79109204