成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
在程序設計中,編譯器必須將代表數據的變量名稱替換成該數據所在的內存地址。變量的名稱、類型及內存地址通常會維持固定,但該內存地址所存儲的數據在程序執行期間則可能會改變。

01介紹

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

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

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

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

02變量聲明方式

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

標準聲明變量

var a int = 100

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

不顯式賦初始值聲明變量

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

var a int

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

省略類型聲明變量

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

var a = 100

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

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

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

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

短變量聲明

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

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

a := 100

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

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

顯式類型轉換

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

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

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 關鍵字的變量聲明方式,如果變量聲明顯式初始化,一般會使用省略類型聲明變量的方式。

局部變量

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

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

04總結

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

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2023-05-15 08:50:58

ContextGolang

2020-08-17 08:30:46

CSS 技巧場景

2021-04-28 09:02:48

Golang語言Context

2023-05-16 07:47:18

RabbitMQ消息隊列系統

2024-04-11 13:41:47

2021-06-06 23:40:53

線程池使用場景

2024-11-27 08:15:50

2022-07-31 23:05:55

Go語言短變量

2013-12-25 16:03:39

GitGit 命令

2011-05-26 15:10:15

靜態變量

2022-05-06 13:30:56

TDD場景代碼

2020-04-07 14:20:10

RabbitMMySQL數據庫

2024-01-05 08:31:08

C語言

2024-12-31 07:56:33

Disruptor內存有界隊列消費模式

2013-10-15 10:11:33

產品測試使用場景產品

2018-05-16 15:26:43

數據庫MySQL主從復制

2015-07-07 10:35:33

2015-08-03 13:36:40

Docker技術優勢應用場景

2021-08-23 12:00:41

云計算

2021-08-13 12:31:26

Redis代碼Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产a视频 | 日韩一级二级片 | 精品一区二区三区在线观看国产 | av中文字幕在线播放 | 亚洲综合视频 | 成人动漫一区二区 | 日日干天天干 | av免费观看网站 | 欧美日韩国产高清视频 | 久久久久国产一区二区 | 成人区一区二区三区 | 国产精品免费在线 | 夜夜骚视频 | 看片地址 | 伊人艹 | 国产精品五区 | 九一国产精品 | 日本a视频| 伊人网综合在线 | 国产午夜在线观看 | 亚洲性在线 | 亚洲精品一区久久久久久 | 国产精品一二区 | 999国产视频 | 国产成人一区二区三区 | 激情 一区 | 中文字幕影院 | 888久久久 | 国产一区免费视频 | 日韩电影一区二区三区 | 日本视频一区二区三区 | 日韩免费高清视频 | 国产日韩欧美激情 | 国产精品国产精品 | 亚洲a视频| 狠狠狠色丁香婷婷综合久久五月 | 亚洲一区二区三区高清 | 一级毛片观看 | 一区二区三区四区在线免费观看 | 国产精品久久久久久亚洲调教 | 亚洲一区二区三区在线视频 |