GO語(yǔ)言短變量聲明的實(shí)現(xiàn)示例
基本語(yǔ)法
variableName := value
功能特點(diǎn)
1、自動(dòng)類型推斷:編譯器會(huì)根據(jù)右側(cè)的值自動(dòng)推斷變量類型。
x := 42 // int y := "hello" // string z := 3.14 // float64
2、只能用于局部變量:只能在函數(shù)或方法內(nèi)部使用,不能在全局(包級(jí)別)使用。
3、可以同時(shí)聲明多個(gè)變量。
a, b := 1, "two"
4、至少聲明一個(gè)新變量:在 := 左側(cè)的變量中,至少有一個(gè)必須是新變量(未聲明過(guò)的),否則會(huì)報(bào)錯(cuò)。
x := 10 x, y := 20, 30 // 正確,因?yàn)?y 是新變量 x, y := 40, 50 // 錯(cuò)誤:no new variables on left side of :=
與var的區(qū)別
特性 | :=(短變量聲明) | var 聲明 |
---|---|---|
作用域 | 僅限函數(shù)內(nèi)部 | 全局或局部均可 |
類型推斷 | 可自動(dòng)推斷 | 可自動(dòng)推斷 |
顯式類型聲明 | 不可指定 | 可指定(var x int = 10) |
多變量聲明 | 支持(a, b := 1, 2) | 支持(var a, b = 1, 2) |
重新聲明限制 | 至少一個(gè)新變量 | 不能重復(fù)聲明(同一作用域) |
適用場(chǎng)景
1、函數(shù)內(nèi)部快速聲明變量
func main() { name := "Alice" // 自動(dòng)推斷為 string age := 30 // 自動(dòng)推斷為 int fmt.Println(name, age) }
2、多返回值函數(shù)的接收
func getData() (int, string) { return 100, "OK" } func main() { code, msg := getData() // 自動(dòng)推斷 code(int), msg(string) fmt.Println(code, msg) }
3、if、for 等語(yǔ)句中的臨時(shí)變量
if n := 10; n > 5 { fmt.Println("n is greater than 5") }
注意事項(xiàng)
1、不能在全局使用
package main x := 10 // ? 錯(cuò)誤:syntax error: non-declaration statement outside function body func main() { y := 20 // ? 正確 }
2、不能用于已聲明的變量(除非至少一個(gè)新變量)
func main() { a := 10 a := 20 // ? 錯(cuò)誤:no new variables on left side of := a, b := 20, 30 // ? 正確,因?yàn)?b 是新變量 }
3、類型一旦確定,不能更改
x := 10 x = "hello" // ? 錯(cuò)誤:cannot use "hello" (untyped string constant) as int value
到此這篇關(guān)于GO語(yǔ)言短變量聲明的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)GO語(yǔ)言短變量聲明內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang利用compress/flate包來(lái)壓縮和解壓數(shù)據(jù)
在處理需要高效存儲(chǔ)和快速傳輸?shù)臄?shù)據(jù)時(shí),數(shù)據(jù)壓縮成為了一項(xiàng)不可或缺的技術(shù),Go語(yǔ)言的compress/flate包為我們提供了對(duì)DEFLATE壓縮格式的原生支持,本文將深入探討compress/flate包的使用方法,揭示如何利用它來(lái)壓縮和解壓數(shù)據(jù),并提供實(shí)際的代碼示例,需要的朋友可以參考下2024-08-08一文搞懂Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)strconv
strconv包實(shí)現(xiàn)了基本數(shù)據(jù)類型和其字符串表示的相互轉(zhuǎn)換,本文主要介紹Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)strconv,想要學(xué)習(xí)strconv標(biāo)準(zhǔn)庫(kù)的可以了解一下2023-04-04Go語(yǔ)言七篇入門教程六網(wǎng)絡(luò)編程
這篇文章主要為大家介紹了Go語(yǔ)言的網(wǎng)絡(luò)編程,其中包含了Socket編程,Http編程以及RPC編程,本篇文章是Go語(yǔ)言七篇入門系列文章,有需要的朋友可以借鑒下2021-11-11go module構(gòu)建項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了go module構(gòu)建項(xiàng)目的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Go讀取yaml文件到struct類的實(shí)現(xiàn)方法
本文主要介紹了Go讀取yaml文件到struct類,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Golang干貨分享之利用AST實(shí)現(xiàn)AOP功能
本文主要是一個(gè)純干貨分享,主要介紹了Golang如何利用AST實(shí)現(xiàn)AOP功能,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04