Go之指標
阿新 • • 發佈:2020-10-12
package main import "fmt" // import "strings" func main() { // 指標 // 區別於C/C++中的指標,Go語言中的 // 指標不能進行偏移和運算,是安全指標 // Go語言中的函式傳參都是值拷貝 // 當我們需要修改某個變數,可以建立一個指向 // 該變數地址的指標變數 // Go語言中的值型別(int,float,bool,string,array,struct) // 都有對應的指標型別 a := 10 b := &a fmt.Println(b) //0xc000012090 fmt.Println(*b) //10 // new和make的區別 // new是一個內建函式,它的函式簽名如下 // func new(Type) *Type // new函式不太常用,使用new函式得到的是一個型別的指標 // 並且該指標對應的值為該型別的零值 c := new(int) fmt.Println(*c) //0 // make也用於記憶體分配,區別於new // 它只用於sloce、map以及chan的記憶體建立 // 而且它返回的型別就是折三個型別本身,而不是它們的指標型別 // 因為這三種類型就是引用型別,所以沒必要返回它們的指標了 // 它的函式簽名如下 // func make(t Type, size ...IntegerType) Type // make函式無可替代,我們使用sloce、map以及chan 的時候 // 都需要用make進行初始化,然後才可以對它進行操作 x := make([]int, 4) fmt.Println(x) // 自定義型別 // go語言中可以通過type關鍵字來自定義型別 // 自定義型別定義了一個全新的型別,我們可以基於內建的基本型別定義 // 也可以通過struct定義 // 通過type關鍵詞的定義,MyInt就是一中新的型別,它具有int的特性 type MyInt int var y MyInt = 55 fmt.Println(y) // 類型別名 type TheInt = int var z TheInt = 55 fmt.Println(z) // 我們之前見過的type就是類型別名 // 它們的定義是 type byte = uint8 }