golang的下划線有以下三種用法


千行網址導航:http://www.qianxingweb.com 

轉載:https://blog.csdn.net/wanglei9876/article/details/50475864的文章

golang的下划線有以下三種用法

1.忽略返回值 
這個應該是最簡單的用途,比如某個函數返回三個參數,但是我們只需要其中的兩個,另外一個參數可以忽略,這樣的話代碼可以這樣寫:

v1, v2, _ := function(...)

2.用在變量(特別是接口斷言)

例如我們定義了一個接口(interface):

type Foo interface { Say() }

然后定義了一個結構體(struct)

type Dog struct { }

然后我們希望在代碼中判斷Dog這個struct是否實現了Foo這個interface

var _ Foo = Dog{}

上面用來判斷Dog是否實現了Foo, 用作類型斷言,如果Dog沒有實現Foo,則會報編譯錯誤

3.用在import package 
假設我們在代碼的import中這樣引入package:

import _ "test/foo"

這表示呢在執行本段代碼之前會先調用test/foo中的初始化函數(init),這種使用方式僅讓導入的包做初始化,而不使用包中其他功能 
例如我們定義了一個Foo struct,然后對它進行初始化

package foo import "fmt" type Foo struct { Id int Name string } func init() { f := &Foo{Id: 123, Name: "abc"} fmt.Printf("init foo object: %v\n", f) }

 

然后在main函數里面引入test/foo

package main
import ( "fmt" _ "test/foo" ) func main() { fmt.Printf("hello world\n") }

運行結果如下

init foo object: &{123 abc} hello world

我們可以看到:在main函數輸出”hello world”之前就已經對foo對象進行初始化了! 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM