golang new和make

new和make

1. new 和 make 都用于分配内存;

2. new 对指针类型分配内存,返回值是分配类型的指针,new也可以对 slice 、map、channel 分配内存;但多用于自定义的结构体

3. make 仅用于 slice、map和 channel 类型的初始化分配内存空间,返回值为类型本身,而不是指针

4、new分配的返回的时指针,即类型*T;make返回引用,即T;

一、示例

package main

import "fmt"

func main() {
    a := make([]int, 3, 10)
    a = append(a, 1)
    fmt.Printf("%v,%T\n", a, a)

    b := new([]int)

    *b = append(*b, 10)
    fmt.Printf("%v,%T\n", b, b)
}

输出:
[0 0 0 1],[]int
&[10],*[]int

 

posted @ 2023-05-21 22:22  wushaoyu  阅读(22)  评论(0编辑  收藏  举报