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

Golang語言的多種變量聲明方式與使用場(chǎng)景詳解

 更新時(shí)間:2022年02月14日 11:05:35   作者:frank  
Golang當(dāng)中的變量類型和C/C++比較接近,一般用的比較多的也就是int,float和字符串,下面這篇文章主要給大家介紹了關(guān)于Golang語言的多種變量聲明方式與使用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下

01介紹

在程序設(shè)計(jì)中,編譯器必須將代表數(shù)據(jù)的變量名稱替換成該數(shù)據(jù)所在的內(nèi)存地址。變量的名稱、類型及內(nèi)存地址通常會(huì)維持固定,但該內(nèi)存地址所存儲(chǔ)的數(shù)據(jù)在程序執(zhí)行期間則可能會(huì)改變。

Golang 語言編譯器需要先明確變量的內(nèi)存邊界,才可以使用變量。通過聲明變量使用的類型,編譯器可以明確變量的內(nèi)存邊界。

因?yàn)?Golang 語言是靜態(tài)語言,它不能像動(dòng)態(tài)語言那樣,在運(yùn)行時(shí)可以通過分析變量的值,自動(dòng)確定變量的內(nèi)存邊界,所以在 Golang 語言中,使用變量之前,需要先聲明變量。

在 Golang 語言中,在變量顯式賦值的前提下,聲明變量可以省略類型,和使用短變量聲明方法時(shí),也不需要指定變量類型,此時(shí),編譯器會(huì)根據(jù)變量的值通過類型推斷得出變量類型,從而明確變量的內(nèi)存邊界。

02變量聲明方式

Golang 語言的變量聲明比較靈活,它支持多種變量聲明的方式,包括標(biāo)準(zhǔn)聲明變量,不顯式賦初始值聲明變量,省略類型聲明變量和短變量聲明。

標(biāo)準(zhǔn)聲明變量

var a int = 100

閱讀上面這段代碼,我們可以發(fā)現(xiàn) Golang 語言的標(biāo)準(zhǔn)聲明變量方式包含 4 部分,分別是 var 關(guān)鍵字,變量名 a,變量類型 int 和變量的值 100。

不顯式賦初始值聲明變量

如果我們不想給聲明的變量賦初始值,也可以不顯式給變量賦值,省略等號(hào)和值,如下所示:

var a int

如果不顯式給變量賦值,變量的值是類型的零值,即類型的默認(rèn)值。

省略類型聲明變量

標(biāo)準(zhǔn)聲明變量方式的 4 部分,除了可以不顯式給變量賦值,還可以省略類型,如下所示:

var a = 100

我們?cè)谖恼麻_頭介紹編譯器需要根據(jù)變量的類型確定變量的內(nèi)存邊界,如果在聲明變量時(shí),未指定變量的類型,編譯器還可以確定變量的內(nèi)存邊界嗎?

答案是可以。原因是 Golang 編譯器可以根據(jù)變量的賦值通過類型推斷得到變量的類型。

細(xì)心的讀者可能會(huì)問,Golang 語言可以將標(biāo)準(zhǔn)變量聲明方式的 4 部分中類型和顯式賦初始值同時(shí)省略嗎?

答案是不可以。Golang 編譯器必須至少明確變量的類型或初始值,二者如果都省略,編譯器將無法得到變量的類型,從而也就不能根據(jù)類型明確變量的內(nèi)存邊界。

短變量聲明

以上兩種在標(biāo)準(zhǔn)聲明變量方式的基礎(chǔ)上簡(jiǎn)化的變量聲明方式,都需要使用關(guān)鍵字 var,可能會(huì)有讀者問可以省略關(guān)鍵字 var 嗎?

答案是可以。Golang 語言還有一種最簡(jiǎn)化的聲明變量的方式,短變量聲明,使用短變量聲明的方式,可以同時(shí)省略關(guān)鍵字 var 和變量的類型。

a := 100

閱讀上面這段代碼,它就是短變量聲明,與標(biāo)準(zhǔn)變量聲明的方式相比,該方式省略了關(guān)鍵字 var 和變量的類型。但是,細(xì)心的讀者可能已經(jīng)發(fā)現(xiàn),= 改為 :=。Golang 編譯器可以根據(jù)變量的賦值做類型推斷,得到變量的類型,從而明確變量的內(nèi)存邊界。

短變量聲明的方式雖然是 Golang 語言中最簡(jiǎn)化的變量聲明的方式,但是它也有局限性,它只能用于局部變量聲明。

顯式類型轉(zhuǎn)換

無論是省略類型顯式賦初始值聲明變量,還是短變量聲明,它們都是 Golang 編譯器根據(jù)變量的賦值,通過類型推斷得出變量的默認(rèn)類型。

如果我們也不想使用變量的默認(rèn)類型,那么我們可以通過顯式類型轉(zhuǎn)換得到我們想要的變量類型,如下所示:

var a = int8(100)
b := int8(60)

變量列表聲明

所有聲明變量的方式,都支持變量列表聲明。所謂變量列表聲明,就是使用 var 關(guān)鍵字,通過一行代碼聲明多個(gè)變量。

var a, b, c int = 100, 200, 300
var d, e, f int
var g, h, i = 400, "你好", true
j, k, l := 500, "世界", 3.14

變量聲明塊

Golang 語言還支持變量聲明塊,使用關(guān)鍵字 var 將多個(gè)單個(gè)變量聲明或變量列表聲明放在一起,如下所示:

var (
    a int = 100
    b int = 200
)

var (
    c = 300
    d = 3.14
    f = true
)

var (
    e, f, g int = 10, 20, 30
    h, i, j string = "a", "b", "c"
)

03使用場(chǎng)景

我們介紹了多種變量聲明的方式,那么每種 Golang 語言變量聲明方式的使用場(chǎng)景分別是什么,首先,我們需要先了解 Golang 語言中變量的作用域,分別是包級(jí)變量,全局變量和局部變量。

包級(jí)變量

包級(jí)變量的作用域是只能在同一個(gè) package 中使用。

包級(jí)變量,只能使用 var 關(guān)鍵字的變量聲明方式,如果變量聲明顯式初始化,一般會(huì)使用省略類型聲明變量的方式。

全局變量

全局變量的作用域是在項(xiàng)目的任意位置都可以使用。

如果包級(jí)變量的變量名首字母大寫,也就是 Golang 語言中的導(dǎo)出變量,那么這個(gè)變量就成為全局變量,可以在全局使用。

全局變量,也只能使用 var 關(guān)鍵字的變量聲明方式,如果變量聲明顯式初始化,一般會(huì)使用省略類型聲明變量的方式。

局部變量

局部變量的作用域是只能在函數(shù)體或方法體中使用。

局部變量,一般會(huì)優(yōu)先使用短變量聲明的方式,除非不想給局部變量顯式初始化,我們可以使用省略類型聲明變量的方式。

04注意事項(xiàng):

函數(shù)外的每個(gè)語句都必須以關(guān)鍵字開始(var、const、func等);

:= 不能使用在函數(shù)外;

_ 多用于占位,表示忽略值;

05總結(jié)

本文我們介紹 Golang 語言為什么在使用變量之前,需要先聲明變量;Golang 語言有哪些變量聲明的方式和 Golang 語言的每種變量聲明方式適用于什么場(chǎng)景。

到此這篇關(guān)于Golang語言的多種變量聲明方式與使用場(chǎng)景的文章就介紹到這了,更多相關(guān)Golang多種變量聲明與使用場(chǎng)景內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang泛型與反射的應(yīng)用詳解

    Golang泛型與反射的應(yīng)用詳解

    如果我想編寫一個(gè)可以輸出任何給定類型的切片并且不使用反射的打印功能,則可以使用新的泛型語法。文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式

    Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式

    這篇文章主要介紹了Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • go語言實(shí)現(xiàn)mqtt協(xié)議的實(shí)踐

    go語言實(shí)現(xiàn)mqtt協(xié)議的實(shí)踐

    MQTT是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。本文主要介紹了go語言實(shí)現(xiàn)mqtt協(xié)議的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Go routine使用方法講解

    Go routine使用方法講解

    goroutine是Go語言提供的語言級(jí)別的輕量級(jí)線程,在我們需要使用并發(fā)時(shí),我們只需要通過go關(guān)鍵字來開啟goroutine即可。這篇文章主要介紹了GoLang并發(fā)機(jī)制goroutine原理,感興趣的可以了解一下
    2023-01-01
  • Go 加密解密算法小結(jié)

    Go 加密解密算法小結(jié)

    加密解密在實(shí)際開發(fā)中應(yīng)用比較廣泛,常見的加解密分為三種,本文就詳細(xì)的介紹一下Go 加密解密算法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-01-01
  • 詳解Go語言如何進(jìn)行Http調(diào)用

    詳解Go語言如何進(jìn)行Http調(diào)用

    無論是微服務(wù)還是單體架構(gòu)等,服務(wù)間都有相互通信的時(shí)候,而最直接的通信方法就是 HTTP 調(diào)用,本文將會(huì)介紹在 Go 語言里,如何進(jìn)行 HTTP 調(diào)用,需要的可以參考一下
    2022-12-12
  • go語言實(shí)現(xiàn)同步操作項(xiàng)目示例

    go語言實(shí)現(xiàn)同步操作項(xiàng)目示例

    本文主要介紹了go語言實(shí)現(xiàn)同步操作項(xiàng)目示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例

    go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例

    本文主要介紹了go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 理解Golang中的數(shù)組(array)、切片(slice)和map

    理解Golang中的數(shù)組(array)、切片(slice)和map

    這篇文章主要介紹了理解Golang中的數(shù)組(array)、切片(slice)和map,本文先是給出代碼,然后一一分解,并給出一張內(nèi)圖加深理解,需要的朋友可以參考下
    2014-10-10
  • 利用Go語言實(shí)現(xiàn)在終端繪制小兔子

    利用Go語言實(shí)現(xiàn)在終端繪制小兔子

    這篇文章主要為大家詳細(xì)介紹了如何利用Go語言實(shí)現(xiàn)在終端繪制小兔子來給大家拜個(gè)早年,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-01-01

最新評(píng)論