- GO語言編程從入門到實踐
- 黃永祥
- 585字
- 2023-08-31 19:57:00
2.1.3 空白標識符
在Go語言中還定義了一些特殊標識符,在安裝目錄doc文件夾的go_spec.html文件中能找到相應說明,如圖2-3所示。

圖2-3 預定義標識符
官方文檔將標識符分為4種類型,分別是空白標識符(Blank identifier)、預聲明標識符(Pre declared identifiers)、導出標識符(Exported identifiers)和唯一標識符(Uniqueness of identifiers)。
空白標識符僅由下劃線(_)表示,作為匿名占位符,因為Go語言定義變量且不被使用的時候,程序會提示異常,對于不被使用且存在的變量,可以使用空白標識符表示,并且能減少內存空間開支,一般用于3種場合,具體說明如下:
1)導入某個包,只執行包的初始化函數init(),不調用包的任何變量或函數,使用import _ XXX可以避免編譯錯誤。
2)函數設有多個返回值,但程序中只使用一個返回值,不被使用的返回值可以使用空白標識符表示。
3)類型斷言,判斷某個類型是否實現了接口,否則編譯出錯。
根據上述3種應用場合,在chapter2.1.3.go文件中分別使用代碼加以說明,代碼如下:
package main // 場合一 // 只使用net/http/pprof的初始化函數init() import ( "fmt" _ "net/http/pprof" ) func myfunc() (int, string){ // 自定義函數,設置兩個返回值 a := 10 b := "golang" return a, b } type Foo interface { // 定義接口 Say() } type Dog struct { // 定義結構體 name string } func (d Dog) Say() { // 結構體實現接口Foo的使用 fmt.Println(d.name + " say hi") } func main(){ // 場合二 // 調用函數myfunc()并只獲取第一個返回值 a, _ := myfunc() fmt.Printf("只獲取函數myfunc的第一個返回值%d:\n", a) // 場合三 // 判斷結構體Dog是否實現接口Foo的使用 // 等同于判定有沒有定義func (d Dog) Say(){} // 用作類型斷言,如果Dog沒有實現Foo,則會報編譯錯誤 var _ Foo = Dog{"black dog"} }
推薦閱讀
- Software Defined Networking with OpenFlow
- Delphi程序設計基礎:教程、實驗、習題
- Python從菜鳥到高手(第2版)
- Learning Elixir
- Hands-On Neural Network Programming with C#
- C++編程兵書
- RocketMQ實戰與原理解析
- Continuous Delivery and DevOps:A Quickstart Guide Second Edition
- Learning C++ by Creating Games with UE4
- Android編程權威指南(第4版)
- Java自然語言處理(原書第2版)
- Java服務端研發知識圖譜
- SOA Patterns with BizTalk Server 2013 and Microsoft Azure(Second Edition)
- Scala編程(第4版)
- Django 2.0 入門與實踐