最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang中指針的使用詳解

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

1.概念

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

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

指針?lè)譃閮煞N:類(lèi)型指針和切片指針

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

切片指針是切片類(lèi)型的指針,它包含起始元素的原始指針、元素?cái)?shù)量和容量

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

2.指針定義與空指針

語(yǔ)法格式

var name *type

name 代表指針變量名

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

Go 語(yǔ)言的空值用 nil 表示

空指針:指針為空值

3.指針賦值與取值

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

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

4.切片指針

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

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

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

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

切片指針的語(yǔ)法定義如下:

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

name 代表指針變量名

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

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

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

5.指針的指針

指針的指針:是一個(gè)指針變量指向另一個(gè)指針變量,另一個(gè)指針變量指向某個(gè)變量

語(yǔ)法格式:

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

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

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

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

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

相關(guān)文章

  • Golang創(chuàng)建構(gòu)造函數(shù)的方法超詳細(xì)講解

    Golang創(chuàng)建構(gòu)造函數(shù)的方法超詳細(xì)講解

    構(gòu)造器一般面向?qū)ο笳Z(yǔ)言的典型特性,用于初始化變量。Go語(yǔ)言沒(méi)有任何具體構(gòu)造器,但我們能使用該特性去初始化變量。本文介紹不同類(lèi)型構(gòu)造器的差異及其應(yīng)用場(chǎng)景
    2023-01-01
  • GoLang基礎(chǔ)學(xué)習(xí)之go?test測(cè)試

    GoLang基礎(chǔ)學(xué)習(xí)之go?test測(cè)試

    相信每位編程開(kāi)發(fā)者們應(yīng)該都知道,Golang作為一門(mén)標(biāo)榜工程化的語(yǔ)言,提供了非常簡(jiǎn)便、實(shí)用的編寫(xiě)單元測(cè)試的能力,下面這篇文章主要給大家介紹了關(guān)于GoLang基礎(chǔ)學(xué)習(xí)之go?test測(cè)試的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Golang中的泛型你真的了解嗎

    Golang中的泛型你真的了解嗎

    Golang?在?1.18?版本更新后引入了泛型,這是一個(gè)重要的更新,Gopher?萬(wàn)眾矚目,為?Golang?帶來(lái)了更多的靈活性和可重用性,今天,我們將深入探討泛型的概念、為什么需要泛型、泛型的語(yǔ)法,并探討如何在實(shí)踐中使用它
    2023-05-05
  • Golang中的自定義類(lèi)型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion)

    Golang中的自定義類(lèi)型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion)

    這篇文章主要介紹了Golang中的自定義類(lèi)型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Go使用MongoDB的操作指南(增刪改查)

    Go使用MongoDB的操作指南(增刪改查)

    MongoDB 是一種高性能、開(kāi)源、文檔型的 NoSQL 數(shù)據(jù)庫(kù),廣泛應(yīng)用于 Web 應(yīng)用、大數(shù)據(jù)以及云計(jì)算領(lǐng)域,Go 語(yǔ)言則以其快速、開(kāi)發(fā)效率高、代碼可維護(hù)性強(qiáng)著稱(chēng),本指南將詳細(xì)介紹如何在 Go 語(yǔ)言中使用 MongoDB 進(jìn)行數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下
    2024-08-08
  • Go語(yǔ)言 init函數(shù)的具體使用

    Go語(yǔ)言 init函數(shù)的具體使用

    init()函數(shù)是Go語(yǔ)言中一種特殊的函數(shù),用于在包被導(dǎo)入時(shí)執(zhí)行一次性的初始化操作,本文就來(lái)介紹一下Go語(yǔ)言 init函數(shù)的具體使用,感興趣的可以了解一下
    2024-09-09
  • GoLand編譯帶有構(gòu)建標(biāo)簽的程序思路詳解

    GoLand編譯帶有構(gòu)建標(biāo)簽的程序思路詳解

    這篇文章主要介紹了GoLand編譯帶有構(gòu)建標(biāo)簽的程序,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Go創(chuàng)建一個(gè)包并使用(導(dǎo)入本地包和注意事項(xiàng))

    Go創(chuàng)建一個(gè)包并使用(導(dǎo)入本地包和注意事項(xiàng))

    有時(shí)候需要自己寫(xiě)一個(gè)包方便多次使用,但是在導(dǎo)入自己寫(xiě)的包時(shí)遇到了問(wèn)題,本文主要介紹了Go創(chuàng)建一個(gè)包并使用(導(dǎo)入本地包和注意事項(xiàng)),感興趣的可以了解一下
    2023-11-11
  • 基于Golang實(shí)現(xiàn)統(tǒng)一加載資源的入口

    基于Golang實(shí)現(xiàn)統(tǒng)一加載資源的入口

    當(dāng)我們需要在?main?函數(shù)中做一些初始化的工作,比如初始化日志,初始化配置文件,都需要統(tǒng)一初始化入口函數(shù),所以本文就來(lái)編寫(xiě)一個(gè)統(tǒng)一加載資源的入口吧
    2023-05-05
  • go中Excelize處理excel表實(shí)現(xiàn)帶數(shù)據(jù)校驗(yàn)的文件導(dǎo)出

    go中Excelize處理excel表實(shí)現(xiàn)帶數(shù)據(jù)校驗(yàn)的文件導(dǎo)出

    本文主要介紹了go中Excelize處理excel表實(shí)現(xiàn)帶數(shù)據(jù)校驗(yàn)的文件導(dǎo)出,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評(píng)論

兴化市| 罗平县| 醴陵市| 七台河市| 绥江县| 调兵山市| 麦盖提县| 宾川县| 微山县| 陆良县| 拉孜县| 巩留县| 逊克县| 土默特左旗| 佛坪县| 两当县| 银川市| 吐鲁番市| 延安市| 沐川县| 翁源县| 凤台县| 平果县| 尉犁县| 广水市| 阜南县| 宁夏| 读书| 佛坪县| 新郑市| 漾濞| 罗源县| 延安市| 东阿县| 临安市| 镇宁| 汶上县| 彭阳县| 开鲁县| 望谟县| 东阳市|