Go語言 “ _ ”(下劃線),“_”是特殊標(biāo)識(shí)符亿昏,用來忽略結(jié)果妖胀。
下劃線意思是忽略這個(gè)變量.比如os.Open芥颈,返回值為*os.File,error普通寫法是f,err:=os.Open("xxxxxxx")如果此時(shí)不需要知道返回的錯(cuò)誤值就可以用f,_:=os.Open("xxxxxx")如此則忽略了error變量
占位符赚抡,意思是那個(gè)位置本應(yīng)賦給某個(gè)值爬坑,但是咱們不需要這個(gè)值。
所以就把該值賦給下劃線涂臣,意思是丟掉不要盾计。
這樣編譯器可以更好的優(yōu)化,任何類型的單個(gè)值都可以丟給下劃線。
這種情況是占位用的署辉,方法返回兩個(gè)結(jié)果族铆,而你只想要一個(gè)結(jié)果。
那另一個(gè)就用 "_" 占位涨薪,而如果用變量的話骑素,不使用,編譯器是會(huì)報(bào)錯(cuò)的刚夺。
import"database/sql"import _"github.com/go-sql-driver/mysql"
第二個(gè)import就是不直接使用mysql包献丑,只是執(zhí)行一下這個(gè)包的init函數(shù),把mysql的驅(qū)動(dòng)注冊(cè)到sql包里侠姑,然后程序里就可以使用sql包來訪問mysql數(shù)據(jù)庫了创橄。
package main
import "fmt"
func Foo(a,b int) (ret int, err error) {
if a > b {
return a,nil
}else {
return b,nil
}
return 0,nil
}
func? main()? {
i,_:= Foo(1,2)
fmt.Println("Hello,世界",i)
}