初識
任何程式資料載入記憶體後,在記憶體都有他們的位址,這就是指標。而為了儲存乙個資料在記憶體中的位址,我們就需要指標變數。
go語言中的指標不能進行偏移和運算,因此go語言中的指標操作非常簡單,我們只需要記住兩個符號:&(取位址)和*(根據位址取值)。go語言中的值型別(int、float、bool、string、array、struct)都有對應的指標型別,如:*int、*int64、*string等。
取變數指標的語法:
ptr := &v // v的型別為t
其中:
v:代表被取位址的變數,型別為t
ptr:用於接收位址的變數,ptr的型別就為* t,稱做t的指標型別。* 代表指標。
示例:
func
main()
b := &a的圖示:
變數、指標位址、指標變數、取位址、取值的相互關係和特性如下:
對變數進行取位址(&)操作,可以獲得這個變數的指標變數。
指標變數的值是指標位址。
對指標變數進行取值(*)操作,可以獲得指標變數指向的原變數的值。
當乙個指標被定義後沒有分配到任何變數時,它的值為 nil
空指標的判斷:
package main
import
"fmt"
func
main()
else
}
new 和 make在go語言中對於引用型別的變數,我們在使用的時候不僅要宣告它,還要為它分配記憶體空間,否則我們的值就沒辦法儲存。而對於值型別的宣告不需要分配記憶體空間,是因為它們在宣告的時候已經預設分配好了記憶體空間。要分配記憶體,就引出來今天的new和make
func
main()
func
main()
1.二者都是用來做記憶體分配的。
2.make只用於slice、map以及channel的初始化,返回的還是這三個引用型別本身;
3.而new用於型別的記憶體分配,並且記憶體對應的值為型別零值,返回的是指向型別的指標。
go語言資料型別之數值型別
整型 整型分為以下兩個大類 按長度分為 int8 int16 int32 int64 對應的無符號整型 uint8 uint16 uint32 uint64 其中,uint8就是我們熟知的byte型 var a int 10 fmt.printf d n a 浮點型 go語言支援兩種浮點型數 flo...
Go 語言程式設計 高階資料型別 指標
乙個指標變數指向了乙個值的記憶體位址。類似於變數和常量,在使用指標前需要宣告 定義乙個指標變數。宣告乙個指標變數,格式 var var name type示例 var ip int 宣告整型指標變數 var fp float32 宣告浮點型指標變數 指標使用流程 宣告指標變數。為指標變數賦值。訪問指...
Go語言資料型別
go語言任何乙個變數都有乙個型別。go語言的資料型別分為基礎型別 引用型別 結構型別 基礎型別 數值型別 字元型別 字串型別 布林型別 陣列型別 引用型別 切片 map channel inte cce型別 結構型別 結構體go語言整型分為有符號 無符號型別兩大型別 有符號整數型別 既可以支援正數也...