国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Golang > 正文

淺談Go語言的空標(biāo)示符

2020-04-01 19:09:02
字體:
供稿:網(wǎng)友

前言

Go語言是一門很簡(jiǎn)單的語言,它為我們做了很多的決定,比如很多在其他語言中不推薦使用的編碼風(fēng)格在Go是不允許的。比如: 變量或者包聲明或?qū)牒鬀]有使用是無法編譯通過的。 它的編譯只有Fatal沒有Warning,這對(duì)于代碼質(zhì)量是很有好處的。在其他語言中 最佳實(shí)踐也是編寫warning-free的代碼。Go把這個(gè)最佳實(shí)踐放到了語言級(jí)別。

Go中的空標(biāo)示符(blank indentifier):  _

剛開始在看到Go中的空標(biāo)示符是以為它只是一種約定,因?yàn)橄聞澗€看起來比那么的 顯眼,而普通變量又不太可能只使用一個(gè)下劃線來命名,在其他語言中我們不想使用 一個(gè)變量的話很簡(jiǎn)單忽略之就可以了,而如果對(duì)一個(gè)函數(shù)的返回值不感興趣的話, 不對(duì)返回值賦值即可。

先記錄下結(jié)論:空標(biāo)示符不是一個(gè)普通變量或標(biāo)示符,而是一個(gè)特殊的標(biāo)示符, 對(duì)于這種類型的標(biāo)示符綁定表達(dá)式時(shí)不進(jìn)行真正的綁定。

這是什么意思呢?也就說比如將一個(gè)值賦值給空操作符是不會(huì)進(jìn)行值綁定的。

package mainimport (   _ "io" // 如果不重名名包為_ 而在代碼中沒有使用這個(gè)包會(huì)編譯不通過      // 這樣導(dǎo)入一個(gè)包是有副作用的,導(dǎo)入一個(gè)包后會(huì)執(zhí)行包的init()方法,      // 如果只是為了避免編譯不通過而綁定到_是不推薦的做法。   "fmt")func getMulti() (int, int) {   return 3, 4}func main() {   _ = 20   // 綁定沒有作用,不會(huì)報(bào)錯(cuò)  // _ := 10 // 編譯不通過,因?yàn)楸磉_(dá)式左邊沒有一個(gè)有效的新的標(biāo)示符        // no new variables on left side of :=  x, _ := getMulti()  fmt.Printf("%d/n", x)  // fmt.Printf("%d/n", _)  這樣是編譯不通過的,因?yàn)開并不能被賦值  //             編譯 "cannot use _ as value"}

總結(jié)

     空標(biāo)示符不是普通標(biāo)示符,是一個(gè)語言級(jí)別的標(biāo)示符,通常用來:

     顯式的忽略函數(shù)或其他多值賦值表達(dá)式中的某些的返回值,多值表達(dá)式通常有:

          1、函數(shù)的多個(gè)返回值

          2、range循環(huán)中的key-value值

          3、多值賦值,比如: x, y, z := 10, 20, 30, 不過這種情況比較小

或者導(dǎo)入包不使用包而只利用包的初始化函數(shù)的副作用。但是不推薦用這種方式 ,來繞過因?yàn)榘幢皇褂枚幾g不通過的問題

本文這里只是做一個(gè)筆記,其實(shí)Go的語言規(guī)范中寫的還是很詳細(xì)的。對(duì)于一些有疑惑的地方一翻手冊(cè)就會(huì)發(fā)現(xiàn)答案。這也是一門語言小的好處,歧義會(huì)非常少。希望本文對(duì)大家學(xué)習(xí)Go語言有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁晋县| 黔西县| 贵德县| 巴彦县| 思茅市| 余江县| 克拉玛依市| 黄骅市| 淳安县| 都昌县| 长顺县| 喜德县| 石泉县| 廉江市| 兴国县| 乌鲁木齐市| 虎林市| 广水市| 武汉市| 炎陵县| 东山县| 健康| 偃师市| 丰镇市| 高安市| 陆川县| 精河县| 南投市| 景谷| 磴口县| 禄劝| 桑日县| 靖远县| 连云港市| 桂林市| 信阳市| 象州县| 衡阳市| 岢岚县| 北辰区| 齐河县|