Golang内存分配内置函数之new函数

new函数用来分配内存,主要分配值类型,比如int、float32、struct等,返回的是指针

package main
import (
    "fmt"
)


func main(){
    num1 := 100    
    fmt.Printf("num1的类型是%T,num1的值为%v,num1的地址是%v
", num1, num1, &num1)
    //结果---num1的类型是int,num1的值为100,num1的地址是0xc042052058
    //内存分配说明:
    //内存里会开辟一个空间,num1指向这个空间,这个空间了里放了值100,那么num1的地址就是这块空间的地址
    
    
    num2 := new(int)

    //*num2 = 100
    fmt.Printf("num2的类型是%T,num2的值为%v,num2的地址是%v
", num2, num2, &num2)
    //结果---num2的类型是*int,num2的值为0xc0420520a0,num2的地址是0xc042072020

    //内存分配说明:
    //num2本身是指针类型,num2会指向一个空间,但是这个空间里的值是一个地址,就是0xc0420520a0,但是这个
    //空间本身也有一个地址,地址就是0xc042072020,而0xc042072020这个地址默认情况的值是个0,因为没有赋值
    
    //进一步说明
    fmt.Printf("num2的类型是%T,num2的值为%v,num2的地址是%v,num2这个指针指向的值是%v", num2, num2, &num2, *num2)
    //结果---num2的类型是*int,num2的值为0xc0420520a0,num2的地址是0xc042072020,num2这个指针指向的值是0
}

待补充:

make:用来分配内存,只要分配引用类型,比如chan、map、slice

原文地址:https://www.cnblogs.com/wt645631686/p/9558566.html