您好,登錄后才能下訂單哦!
Go 語言中怎么定義變量常量的,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
go語言不支持隱式類型轉(zhuǎn)換,別名和原有類型也不能進(jìn)行隱式類型轉(zhuǎn)換
go語言不支持隱式轉(zhuǎn)換
var v1 int var v2 string var v3 [10]int // 數(shù)組 var v4 []int // 數(shù)組切片 var v5 struct { f int } var v6 *int // 指針 var v7 map[string] int // map,key為string類型,value為int類型 var v8 func(a int) int //也可以這樣聲明變量 var ( v1 int v2 string )
聲明變量不需要使用分號(hào)作為結(jié)束符
var v1 int = 10 // 定義并賦值 var v2 = 10 // 編譯器可以自動(dòng)推導(dǎo)出v2的類型 v3 := 10 // 編譯器可以自動(dòng)推導(dǎo)出v3的類型
冒號(hào)和等號(hào)的組合:= 聲明并賦值
出現(xiàn)在:=左側(cè)的變量不應(yīng)該是已經(jīng)被聲明過的,否則會(huì)導(dǎo)致編譯錯(cuò)誤
var a int
a := 2
會(huì)導(dǎo)致類似如下的編譯錯(cuò)誤: no new variables on left side of :=
var v10 int #定義變量 v10 = 1 #變量賦值
go語言提供多重賦值功能,比如下面這個(gè)交換i和j變量的語句: i, j = j, i
在不支持多重賦值的語言中,交互兩個(gè)變量的內(nèi)容需要引入一個(gè)中間變量: t = i; i = j; j = t;
我們?cè)谑褂脗鹘y(tǒng)的強(qiáng)類型語言編程時(shí),經(jīng)常會(huì)出現(xiàn)這種情況,即在調(diào)用函數(shù)時(shí)為了獲取一個(gè) 值,卻因?yàn)樵摵瘮?shù)返回多個(gè)值而不得不定義一堆沒用的變量。在Go中這種情況可以通過結(jié)合使 用多重返回和匿名變量來避免這種丑陋的寫法,讓代碼看起來更加優(yōu)雅。
假設(shè)GetName()函數(shù)的定義如下,它返回3個(gè)值,分別為firstName、lastName和 nickName:
func GetName() (firstName, lastName, nickName string) { return "May", "Chan", "Chibi Maruko" }
若只想獲得nickName,則函數(shù)調(diào)用語句可以用如下方式編寫: _, _, nickName := GetName()
這種用法可以讓代碼非常清晰,基本上屏蔽掉了可能混淆代碼閱讀者視線的內(nèi)容,從而大幅 降低溝通的復(fù)雜度和代碼維護(hù)的難度。
常量是指編譯期間就已知且不可改變的值。常量可以是數(shù)值類型(包括整型、 浮點(diǎn)型和復(fù)數(shù)類型)、布爾類型、字符串類型等。
程序中硬編碼的常量
-12 3.14159265358979323846 // 浮點(diǎn)類型的常量 3.2+12i // 復(fù)數(shù)類型的常量 true // 布爾類型的常量 "foo" // 字符串常量
Go語言的字面常量更接近我們自然語言中的常量概念,它是無類型的。只要這個(gè)常量在相應(yīng)類型的值域 范圍內(nèi),就可以作為該類型的常量
通過關(guān)鍵字const定義常量
const Pi float64 = 3.14159265358979323846 const zero = 0.0 // 無類型浮點(diǎn)常量 const ( size int64 = 1024 eof = -1 // 無類型整型常量 ) const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重賦值 const a, b, c = 3, 4, "foo" // a = 3, b = 4, c = "foo", 無類型整型和字符串常量 //常量賦值是一個(gè)編譯期行為,所以右值也可以是一個(gè)在編譯期運(yùn)算的常量表達(dá)式: const s = 1000 * 60
Go語言預(yù)定義了這些常量:true、false和iota。
iota比較特殊,可以被認(rèn)為是一個(gè)可被編譯器修改的常量,在每一個(gè)const關(guān)鍵字出現(xiàn)時(shí)被 重置為0,然后在下一個(gè)const出現(xiàn)之前,每出現(xiàn)一次iota,其所代表的數(shù)字會(huì)自動(dòng)增1。
const ( // iota被重設(shè)為0 c0 = iota // c0 == 0 c1 = iota // c1 == 1 c2 = iota // c2 == 2 ) const ( u = iota * 42 // u == 0 v float64 = iota * 42 // v == 42.0 )
看完上述內(nèi)容,你們掌握Go 語言中怎么定義變量常量的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。