欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang中指針的使用詳解

 更新時間:2023年04月28日 09:16:29   作者:Scora_liu  
Golang是一門支持指針的編程語言,指針是一種特殊的變量,存儲了其他變量的地址。通過指針,可以在程序中直接訪問和修改變量的值,避免了不必要的內(nèi)存拷貝和傳遞。Golang中的指針具有高效、安全的特點,在并發(fā)編程和底層系統(tǒng)開發(fā)中得到廣泛應(yīng)用

1.概念

指針:指向內(nèi)存地址的變量,指針用來存儲變量的內(nèi)存地址

Go 語言定義變量必須聲明數(shù)據(jù)類型,因為不同數(shù)據(jù)類型的數(shù)據(jù)占用不同的存儲空間,導(dǎo)致內(nèi)存地址分配大小各不相同,所有指針只能存放同一類型變量的內(nèi)存地址。

指針分為兩種:類型指針和切片指針

類型指針允許對數(shù)據(jù)進(jìn)行修改,直接使用指針傳遞數(shù)據(jù),無須復(fù)制數(shù)據(jù),但類型指針不能進(jìn)行偏移和運算。

切片指針是切片類型的指針,它包含起始元素的原始指針、元素數(shù)量和容量

  • 指針:也稱為指針變量,即用來存放內(nèi)存地址的變量,一般情況下,內(nèi)存地址的數(shù)據(jù)格式以0xcXXXXXXX表示,如0xc0000180a8或0xc0000ac058等
  • 指針是一個變量,也有自己的內(nèi)存地址,它存放的內(nèi)存地址是另一個變量的內(nèi)存地址
  • 指針類型:是指針存放的內(nèi)存地址的大小,比如指針a 定義為 int 類型,它只能存放整型變量的內(nèi)存地址,所以在使用指針的時候必須聲明指針類型,確保指針只能存放一種數(shù)據(jù)類型
  • 指針賦值:將某個變量的內(nèi)存地址賦值給指針,在某個變量前面使用取地址操作符“ & ”即可獲取變量的內(nèi)存地址
  • 指針取值:從指針變量中通過某個變量的內(nèi)存地址獲取對應(yīng)的數(shù)值,只需在指針變量前面使用取值操作符“ * ”即可

2.指針定義與空指針

語法格式

var name *type

name 代表指針變量名

type 是指針變量的數(shù)據(jù)類型,如數(shù)字、字符串、切片等Go語言內(nèi)置的數(shù)據(jù)類型

Go 語言的空值用 nil 表示

空指針:指針為空值

3.指針賦值與取值

在Go語言編程中,所有變量先定義后使用

// 定義一個 int 類型的變量 name 并賦值 200
var name int = 200
// 定義一個 int 類型的指針
var ptr *int
// 指針賦值,將 name 的內(nèi)存地址賦值給 ptr,通過取地址符“ & ”
ptr = &name
// 指針取值,在 ptr 前面使用 “ * ” 獲取 name 的值
name1 := *ptr
/*
    & 取出內(nèi)存地址
    * 根據(jù)內(nèi)存地址取出對應(yīng)的數(shù)值
*/

4.切片指針

切片是一種比較特殊的數(shù)據(jù)結(jié)構(gòu),便于使用和管理數(shù)據(jù)集合

切片是圍繞動態(tài)數(shù)組的概念構(gòu)建的,可以按需自動增長和縮小

切片可以理解為動態(tài)數(shù)組,并根據(jù)切片里的元素自動調(diào)整切片長度

Go 語言的切片指針是以切片表示的,切片的每個元素只能存放內(nèi)存地址

切片指針的語法定義如下:

// 定義方式一
var name []*type
// 定義方式二
name := []*type{}
 

name 代表指針變量名

type 是指針變量的數(shù)據(jù)類型,如數(shù)字、字符串等 Go 語言內(nèi)置的數(shù)據(jù)類型

切片指針可以將多個變量的內(nèi)存地址存放在切片中,這樣方便管理多個變量

切片指針定義后,如果沒有設(shè)置初始值,默認(rèn)為空,由于切片是動態(tài)數(shù)組,其數(shù)據(jù)長度能自動調(diào)整,Go 語言不會分配內(nèi)存地址,因此無法通過取地址操作符 “ & ”獲取切片指針的內(nèi)存地址

5.指針的指針

指針的指針:是一個指針變量指向另一個指針變量,另一個指針變量指向某個變量

語法格式:

// 定義指針的指針
var name **type
// 從指針的指針獲取某個變量的值
v := **name

name 代表指針變量名,使用兩個取值操作符 “ * ”定義為指針的指針

type 是指針變量的數(shù)據(jù)類型,如數(shù)字、字符串、切片等Go 語言內(nèi)置的數(shù)據(jù)類型

v 是從指針的指針獲取某個變量的值,必須使用兩個取值操作符 “ * ”實現(xiàn)

到此這篇關(guān)于Golang中指針的使用詳解的文章就介紹到這了,更多相關(guān)Golang指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang字符串常用函數(shù)的使用

    Golang字符串常用函數(shù)的使用

    Golang提供了許多內(nèi)置的字符串函數(shù),這些函數(shù)可在處理字符串?dāng)?shù)據(jù)時幫助執(zhí)行一些操作,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • golang并發(fā)ping主機(jī)的方法

    golang并發(fā)ping主機(jī)的方法

    今天小編就為大家分享一篇golang并發(fā)ping主機(jī)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • go語言中GoMock安裝使用詳解

    go語言中GoMock安裝使用詳解

    這篇文章主要為大家介紹了go語言中GoMock安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 淺析Go語言bitset的實現(xiàn)原理

    淺析Go語言bitset的實現(xiàn)原理

    bitset包是一個將非負(fù)整數(shù)映射到布爾值的位的集合,這篇文章主要通過開源包bitset來為大家分析一下位集合的設(shè)計和實現(xiàn),感興趣的可以學(xué)習(xí)一下
    2023-08-08
  • 淺談Golang數(shù)據(jù)競態(tài)

    淺談Golang數(shù)據(jù)競態(tài)

    本文主要介紹了淺談Golang數(shù)據(jù)競態(tài),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 關(guān)于Golang中range指針數(shù)據(jù)的坑詳解

    關(guān)于Golang中range指針數(shù)據(jù)的坑詳解

    這篇文章主要給大家介紹了關(guān)于Golang中range指針數(shù)據(jù)的坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Go語言中如何確保Cookie數(shù)據(jù)的安全傳輸

    Go語言中如何確保Cookie數(shù)據(jù)的安全傳輸

    這篇文章主要介紹了Go語言中如何確保Cookie數(shù)據(jù)的安全傳輸,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • golang?gorm的預(yù)加載及軟刪硬刪的數(shù)據(jù)操作示例

    golang?gorm的預(yù)加載及軟刪硬刪的數(shù)據(jù)操作示例

    這篇文章主要介紹了golang?gorm的預(yù)加載及軟刪硬刪的數(shù)據(jù)操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Go語言HTTP請求流式寫入body的示例代碼

    Go語言HTTP請求流式寫入body的示例代碼

    這篇文章主要介紹了Go語言HTTP請求流式寫入body,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Golang并發(fā)繞不開的重要組件之Goroutine詳解

    Golang并發(fā)繞不開的重要組件之Goroutine詳解

    Goroutine、Channel、Context、Sync都是Golang并發(fā)編程中的幾個重要組件,這篇文中主要為大家介紹了Goroutine的相關(guān)知識,需要的可以參考一下
    2023-06-06

最新評論