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

Golang語言的多種變量聲明方式與使用場景詳解

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

01介紹

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

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

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

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

02變量聲明方式

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

標準聲明變量

var a int = 100

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

不顯式賦初始值聲明變量

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

var a int

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

省略類型聲明變量

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

var a = 100

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

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

細心的讀者可能會問,Golang 語言可以將標準變量聲明方式的 4 部分中類型和顯式賦初始值同時省略嗎?

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

短變量聲明

以上兩種在標準聲明變量方式的基礎上簡化的變量聲明方式,都需要使用關鍵字 var,可能會有讀者問可以省略關鍵字 var 嗎?

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

a := 100

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

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

顯式類型轉換

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

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

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

變量列表聲明

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

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 語言還支持變量聲明塊,使用關鍵字 var 將多個單個變量聲明或變量列表聲明放在一起,如下所示:

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使用場景

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

包級變量

包級變量的作用域是只能在同一個 package 中使用。

包級變量,只能使用 var 關鍵字的變量聲明方式,如果變量聲明顯式初始化,一般會使用省略類型聲明變量的方式。

全局變量

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

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

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

局部變量

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

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

04注意事項:

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

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

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

05總結

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

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

相關文章

  • 用Go獲取短信驗證碼的示例代碼

    用Go獲取短信驗證碼的示例代碼

    要用Go獲取短信驗證碼,通常需要連接到一個短信服務提供商的API,并通過該API發(fā)送請求來獲取驗證碼,由于不同的短信服務提供商可能具有不同的API和授權方式,我將以一個簡單的示例介紹如何使用Go語言來獲取短信驗證碼,需要的朋友可以參考下
    2023-07-07
  • 使用Golang獲取音視頻時長信息的示例代碼

    使用Golang獲取音視頻時長信息的示例代碼

    這篇文章主要介紹了如何使用Golang獲取音視頻時長信息,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • Golang中間件設計示例詳解

    Golang中間件設計示例詳解

    這篇文章主要介紹了Golang中間件設計示例,中間件是在HTTP請求處理過程中,對請求進行處理的一種模式,中間件可以在請求到達處理器之前或之后對請求進行攔截,修改或者增強,同時可以對響應進行處理,需要的朋友可以參考下
    2023-05-05
  • GO語言基礎入門第一個go程序解讀

    GO語言基礎入門第一個go程序解讀

    這篇文章主要為大家介紹了GO語言基礎入門的第一個go程序解讀,下面來帶大家進入Go語言世界helloworld的大門吧,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Go語言常用字符串處理方法實例匯總

    Go語言常用字符串處理方法實例匯總

    這篇文章主要介紹了Go語言常用字符串處理方法,實例匯總了Go語言中常見的各種字符串處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Golang設計模式之外觀模式的實現(xiàn)

    Golang設計模式之外觀模式的實現(xiàn)

    這篇文章主要介紹了Golang設計模式之外觀模式的實現(xiàn),外觀模式是一種常用的設計模式之一,是一種結構型設計模式,它提供了一個簡單的接口來訪問復雜系統(tǒng)的各種功能,從而降低了系統(tǒng)的復雜度,需要詳細了解可以參考下文
    2023-05-05
  • GO語言數(shù)組和切片實例詳解

    GO語言數(shù)組和切片實例詳解

    這篇文章主要介紹了GO語言數(shù)組和切片的用法,以實例形式較為詳細的分析了GO語言中數(shù)組與切片的創(chuàng)建及使用技巧,是深入學習GO語言的基礎,需要的朋友可以參考下
    2014-12-12
  • 基于Go語言實現(xiàn)一個并發(fā)下載器

    基于Go語言實現(xiàn)一個并發(fā)下載器

    這篇文章主要為大家詳細介紹了如何利用GO語言實現(xiàn)一個并發(fā)的文件下載器,可以在不重新啟動整個下載的情況下處理錯誤,感興趣的小伙伴可以了解一下
    2023-10-10
  • golang獲取prometheus數(shù)據(jù)(prometheus/client_golang包)

    golang獲取prometheus數(shù)據(jù)(prometheus/client_golang包)

    本文主要介紹了使用Go語言的prometheus/client_golang包來獲取Prometheus監(jiān)控數(shù)據(jù),具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • 深入了解Golang中reflect反射基本原理

    深入了解Golang中reflect反射基本原理

    反射是這樣一種機制,它是可以讓我們在程序運行時(runtime)訪問、檢測和修改對象本身狀態(tài)或行為的一種能力。本文主要帶大家來看看Golang中reflect反射基本原理,需要的可以參考一下
    2023-01-01

最新評論

和田县| 峨眉山市| 桂平市| 宣武区| 公安县| 襄垣县| 新蔡县| 桓仁| 彭山县| 桃园市| 昭平县| 柏乡县| 苍山县| 纳雍县| 广安市| 师宗县| 延长县| 榆树市| 宝坻区| 伊通| 靖州| 东丽区| 桃园市| 施甸县| 衡东县| 叙永县| 栾川县| 固始县| 东莞市| 恩施市| 株洲县| 灵丘县| 措美县| 沅江市| 昔阳县| 正安县| 吴江市| 兰州市| 连云港市| 磴口县| 安多县|