Golang記憶體分配內建函式之new函式

OldBoy~發表於2018-08-30

new函式用來分配記憶體,主要分配值型別,比如int、float32、struct等,返回的是指標

package main
import (
    "fmt"
)


func main(){
    num1 := 100    
    fmt.Printf("num1的型別是%T,num1的值為%v,num1的地址是%v\n", 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\n", 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

相關文章