欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年08月10日 09:25:39   投稿:daisy  
本文通過(guò)文字及實(shí)例介紹了Go語(yǔ)言的空標(biāo)示符,對(duì)此有不明白的朋友可以參考學(xué)習(xí),下面一起來(lái)看看吧。

前言

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

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

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

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

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

package main

import ( 
  _ "io" // 如果不重名名包為_(kāi) 而在代碼中沒(méi)有使用這個(gè)包會(huì)編譯不通過(guò)
      // 這樣導(dǎo)入一個(gè)包是有副作用的,導(dǎo)入一個(gè)包后會(huì)執(zhí)行包的init()方法,
      // 如果只是為了避免編譯不通過(guò)而綁定到_是不推薦的做法。
   "fmt"
)

func getMulti() (int, int) { 
  return 3, 4
}

func main() { 
  _ = 20   // 綁定沒(méi)有作用,不會(huì)報(bào)錯(cuò)
  // _ := 10 // 編譯不通過(guò),因?yàn)楸磉_(dá)式左邊沒(méi)有一個(gè)有效的新的標(biāo)示符
        // no new variables on left side of :=

  x, _ := getMulti()

  fmt.Printf("%d\n", x)
  // fmt.Printf("%d\n", _)  這樣是編譯不通過(guò)的,因?yàn)開(kāi)并不能被賦值
  //             編譯 "cannot use _ as value"
}

總結(jié)

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

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

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

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

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

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

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

相關(guān)文章

  • go切片的copy和view的使用方法

    go切片的copy和view的使用方法

    這篇文章主要介紹了go切片的copy和view的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 精選Golang高頻面試題和答案分享

    精選Golang高頻面試題和答案分享

    這篇文章給大家整理了17道Go語(yǔ)言中的高頻面試題和答案詳解,每道題都給出了代碼示例,方便大家更好的理解,需要的小伙伴可以收藏一下
    2023-06-06
  • Golang 刪除文件并遞歸刪除空目錄的操作

    Golang 刪除文件并遞歸刪除空目錄的操作

    這篇文章主要介紹了Golang 刪除文件并遞歸刪除空目錄的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • golang日志包logger的用法詳解

    golang日志包logger的用法詳解

    這篇文章主要介紹了golang日志包logger的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • 一些關(guān)于Go程序錯(cuò)誤處理的相關(guān)建議

    一些關(guān)于Go程序錯(cuò)誤處理的相關(guān)建議

    錯(cuò)誤處理在每個(gè)語(yǔ)言中都是一項(xiàng)重要內(nèi)容,眾所周知,通常寫程序時(shí)遇到的分為異常與錯(cuò)誤兩種,Golang中也不例外,這篇文章主要給大家介紹了一些關(guān)于Go程序錯(cuò)誤處理的相關(guān)建議,需要的朋友可以參考下
    2021-09-09
  • golang interface判斷為空nil的實(shí)現(xiàn)代碼

    golang interface判斷為空nil的實(shí)現(xiàn)代碼

    這篇文章主要介紹了golang interface判斷為空nil的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 使用Go HTTP客戶端打造高性能服務(wù)

    使用Go HTTP客戶端打造高性能服務(wù)

    大多數(shù)語(yǔ)言都有提供各自的 HTTP 客戶端,本文將動(dòng)手實(shí)踐如何使用Go語(yǔ)言發(fā)起HTTP請(qǐng)求,并討論其中有可能遇到的問(wèn)題。具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12
  • Golang token的生成和解析詳解

    Golang token的生成和解析詳解

    這篇文章主要給大家介紹了Golang token的生成和解析,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Go?的入口函數(shù)和包初始化的使用

    Go?的入口函數(shù)和包初始化的使用

    本文主要介紹了Go?的入口函數(shù)和包初始化的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Go 1.21新增的slices包中切片函數(shù)用法詳解

    Go 1.21新增的slices包中切片函數(shù)用法詳解

    Go 1.21新增的 slices 包提供了很多和切片相關(guān)的函數(shù),可以用于任何類型的切片,本文通過(guò)代碼示例為大家介紹了部分切片函數(shù)的具體用法,感興趣的小伙伴可以了解一下
    2023-08-08

最新評(píng)論