書名: GO語言編程從入門到實(shí)踐作者名: 黃永祥本章字?jǐn)?shù): 585字更新時(shí)間: 2023-08-31 19:57:00
2.1.3 空白標(biāo)識(shí)符
在Go語言中還定義了一些特殊標(biāo)識(shí)符,在安裝目錄doc文件夾的go_spec.html文件中能找到相應(yīng)說明,如圖2-3所示。

圖2-3 預(yù)定義標(biāo)識(shí)符
官方文檔將標(biāo)識(shí)符分為4種類型,分別是空白標(biāo)識(shí)符(Blank identifier)、預(yù)聲明標(biāo)識(shí)符(Pre declared identifiers)、導(dǎo)出標(biāo)識(shí)符(Exported identifiers)和唯一標(biāo)識(shí)符(Uniqueness of identifiers)。
空白標(biāo)識(shí)符僅由下劃線(_)表示,作為匿名占位符,因?yàn)镚o語言定義變量且不被使用的時(shí)候,程序會(huì)提示異常,對(duì)于不被使用且存在的變量,可以使用空白標(biāo)識(shí)符表示,并且能減少內(nèi)存空間開支,一般用于3種場(chǎng)合,具體說明如下:
1)導(dǎo)入某個(gè)包,只執(zhí)行包的初始化函數(shù)init(),不調(diào)用包的任何變量或函數(shù),使用import _ XXX可以避免編譯錯(cuò)誤。
2)函數(shù)設(shè)有多個(gè)返回值,但程序中只使用一個(gè)返回值,不被使用的返回值可以使用空白標(biāo)識(shí)符表示。
3)類型斷言,判斷某個(gè)類型是否實(shí)現(xiàn)了接口,否則編譯出錯(cuò)。
根據(jù)上述3種應(yīng)用場(chǎng)合,在chapter2.1.3.go文件中分別使用代碼加以說明,代碼如下:
package main // 場(chǎng)合一 // 只使用net/http/pprof的初始化函數(shù)init() import ( "fmt" _ "net/http/pprof" ) func myfunc() (int, string){ // 自定義函數(shù),設(shè)置兩個(gè)返回值 a := 10 b := "golang" return a, b } type Foo interface { // 定義接口 Say() } type Dog struct { // 定義結(jié)構(gòu)體 name string } func (d Dog) Say() { // 結(jié)構(gòu)體實(shí)現(xiàn)接口Foo的使用 fmt.Println(d.name + " say hi") } func main(){ // 場(chǎng)合二 // 調(diào)用函數(shù)myfunc()并只獲取第一個(gè)返回值 a, _ := myfunc() fmt.Printf("只獲取函數(shù)myfunc的第一個(gè)返回值%d:\n", a) // 場(chǎng)合三 // 判斷結(jié)構(gòu)體Dog是否實(shí)現(xiàn)接口Foo的使用 // 等同于判定有沒有定義func (d Dog) Say(){} // 用作類型斷言,如果Dog沒有實(shí)現(xiàn)Foo,則會(huì)報(bào)編譯錯(cuò)誤 var _ Foo = Dog{"black dog"} }
推薦閱讀
- 黑客攻防從入門到精通(實(shí)戰(zhàn)秘笈版)
- 深入理解Android(卷I)
- WildFly:New Features
- Learn Blockchain Programming with JavaScript
- 零基礎(chǔ)PHP學(xué)習(xí)筆記
- 數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)(Java語言實(shí)現(xiàn))
- 少年輕松趣編程:用Scratch創(chuàng)作自己的小游戲
- NativeScript for Angular Mobile Development
- Animate CC二維動(dòng)畫設(shè)計(jì)與制作(微課版)
- 零代碼實(shí)戰(zhàn):企業(yè)級(jí)應(yīng)用搭建與案例詳解
- Application Development with Parse using iOS SDK
- Greenplum構(gòu)建實(shí)時(shí)數(shù)據(jù)倉庫實(shí)踐
- Mastering Leap Motion
- Mastering OpenStack
- 自己動(dòng)手構(gòu)建編程語言:如何設(shè)計(jì)編譯器、解釋器和DSL