您好,登錄后才能下訂單哦!
今天小編給大家分享一下Golang中的指針怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
指針:指向內存地址的變量,指針用來存儲變量的內存地址
Go 語言定義變量必須聲明數據類型,因為不同數據類型的數據占用不同的存儲空間,導致內存地址分配大小各不相同,所有指針只能存放同一類型變量的內存地址。
指針分為兩種:類型指針和切片指針
類型指針允許對數據進行修改,直接使用指針傳遞數據,無須復制數據,但類型指針不能進行偏移和運算。
切片指針是切片類型的指針,它包含起始元素的原始指針、元素數量和容量
指針:也稱為指針變量,即用來存放內存地址的變量,一般情況下,內存地址的數據格式以0xcXXXXXXX表示,如0xc0000180a8或0xc0000ac058等
指針是一個變量,也有自己的內存地址,它存放的內存地址是另一個變量的內存地址
指針類型:是指針存放的內存地址的大小,比如指針a 定義為 int 類型,它只能存放整型變量的內存地址,所以在使用指針的時候必須聲明指針類型,確保指針只能存放一種數據類型
指針賦值:將某個變量的內存地址賦值給指針,在某個變量前面使用取地址操作符“ & ”即可獲取變量的內存地址
指針取值:從指針變量中通過某個變量的內存地址獲取對應的數值,只需在指針變量前面使用取值操作符“ * ”即可
語法格式
var name *type
name 代表指針變量名
type 是指針變量的數據類型,如數字、字符串、切片等Go語言內置的數據類型
Go 語言的空值用 nil 表示
空指針:指針為空值
在Go語言編程中,所有變量先定義后使用
// 定義一個 int 類型的變量 name 并賦值 200 var name int = 200 // 定義一個 int 類型的指針 var ptr *int // 指針賦值,將 name 的內存地址賦值給 ptr,通過取地址符“ & ” ptr = &name // 指針取值,在 ptr 前面使用 “ * ” 獲取 name 的值 name1 := *ptr /* & 取出內存地址 * 根據內存地址取出對應的數值 */
切片是一種比較特殊的數據結構,便于使用和管理數據集合
切片是圍繞動態數組的概念構建的,可以按需自動增長和縮小
切片可以理解為動態數組,并根據切片里的元素自動調整切片長度
Go 語言的切片指針是以切片表示的,切片的每個元素只能存放內存地址
切片指針的語法定義如下:
// 定義方式一 var name []*type // 定義方式二 name := []*type{}
name 代表指針變量名
type 是指針變量的數據類型,如數字、字符串等 Go 語言內置的數據類型
切片指針可以將多個變量的內存地址存放在切片中,這樣方便管理多個變量
切片指針定義后,如果沒有設置初始值,默認為空,由于切片是動態數組,其數據長度能自動調整,Go 語言不會分配內存地址,因此無法通過取地址操作符 “ & ”獲取切片指針的內存地址
指針的指針:是一個指針變量指向另一個指針變量,另一個指針變量指向某個變量
語法格式:
// 定義指針的指針 var name **type // 從指針的指針獲取某個變量的值 v := **name
name 代表指針變量名,使用兩個取值操作符 “ * ”定義為指針的指針
type 是指針變量的數據類型,如數字、字符串、切片等Go 語言內置的數據類型
v 是從指針的指針獲取某個變量的值,必須使用兩個取值操作符 “ * ”實現
以上就是“Golang中的指針怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。