官术网_书友最值得收藏!

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"}
    }
主站蜘蛛池模板: 常熟市| 宁晋县| 竹山县| 民和| 太保市| 福贡县| 桂东县| 永嘉县| 收藏| 巧家县| 涡阳县| 宝兴县| 肃宁县| 岳池县| 井冈山市| 潍坊市| 共和县| 化德县| 花垣县| 和林格尔县| 靖边县| 河南省| 姚安县| 高碑店市| 塘沽区| 饶河县| 湘阴县| 老河口市| 房产| 左云县| 交城县| 灌云县| 烟台市| 团风县| 大方县| 水富县| 原阳县| 彭泽县| 新沂市| 樟树市| 舒城县|