【Go】Go语言中的下划线
文章目錄
- 一、下劃線是什么:一種特殊的標識符
- 二、下劃線怎么用
- 1. 下劃線在 import 中
- 包導入的常規語法
- 包導入的一些 “花操作” 的語法
- (1)點操作
- (2)別名操作
- (3)本文關注的重點:_ 操作
- 2. 下劃線在代碼中
- 參考鏈接
一、下劃線是什么:一種特殊的標識符
Go語言中,“_” 是一種特殊的標識符,用來忽略結果。
二、下劃線怎么用
1. 下劃線在 import 中
在Go 語言里,import 的作用是導入其他 package。
包導入的常規語法
import("fmt" ) //然后在代碼里面可以通過如下的方式調用 fmt.Println("hello world")這個 fmt 是Go語言的標準庫,他其實是去GOROOT下去加載該模塊,當然Go的 import 還支持如下兩種方式來加載自己寫的模塊:
//相對路徑 import "./test_model" //當前文件同一目錄的test_model目錄,但是不建議這種方式import ? //絕對路徑 import "mygoproject/test_model" //加載GOPATH/src/mygoproject/test_model模塊包導入的一些 “花操作” 的語法
(1)點操作
有時候會看到如下的方式導入包
import . “fmt”這個點操作的含義就是這個包導入之后在你調用這個包的函數時,你可以省略前綴的包名,也就是前面你調用的
fmt.Println(“hello world”) //可以省略的寫成 Println(“hello world”)(2)別名操作
別名操作顧名思義可以把包命名成另一個用起來容易記憶的名字
import( f “fmt” ) //別名操作調用包函數時前綴變成了重命名的前綴,即 f.Println(“hello world”)(3)本文關注的重點:_ 操作
我們都知道,當導入一個包時,該包下的文件里的所有 init() 函數都會被執行。
然而,有些時候我們并不需要把整個包都導入進來,僅僅是希望它執行 init() 函數而已。這個時候就可以使用 import _ 來引用該包。即,使用【import _ 包名】來引用該包,僅僅是為了調用該包中的 init() 函數,所以無法通過包名來調用包中的其他函數。
實例:
代碼結構:
src | +--- main.go | +--- hello|+--- hello.gomain.go:
package mainimport _ "./hello"func main() {// hello.Print() //編譯報錯:./main.go:6:5: undefined: hello }hello.go:
package helloimport "fmt"func init() {fmt.Println("imp-init() come here.") }func Print() {fmt.Println("Hello!") }main.go 的執行結果:
imp-init() come here.說明:main.go 使用 import _ "./hello" 導入 hello 包,會執行 hello 包中的 init() 函數,而無法調用其他函數。
所以我們使用 import _ package 導入一個包,就只是為了執行該包的 init() 函數,而不需要調用包中的其他函數。
為什么我們有時只需要該包的 init() 函數被執行?
實例:
import "database/sql" import _ "github.com/go-sql-driver/mysql"第二個import就是不直接使用mysql包,只是執行一下這個包的init函數,把 mysql 的驅動注冊到sql包里,然后程序里就可以使用 sql 包來訪問 mysql 數據庫了。
2. 下劃線在代碼中
package mainimport ("os" )func main() {buf := make([]byte, 1024)f, _ := os.Open("/Users/***/Desktop/text.txt")defer f.Close()for {n, _ := f.Read(buf)if n == 0 {break }os.Stdout.Write(buf[:n])} }解釋1:
下劃線意思是 忽略 這個變量。
比如os.Open,返回值為*os.File,error
普通寫法是 f,err := os.Open("xxxxxxx")
如果此時,我們不需要知道返回的錯誤值 err 是多少
就可以用 f, _ := os.Open("xxxxxx")
如此則忽略了error變量。
解釋2:
占位符,意思是那個位置本應賦給某個值,但是咱們不需要這個值。
所以就把該值賦給下劃線,意思是丟掉不要。
這樣編譯器可以更好的優化,任何類型的單個值都可以丟給下劃線。
這種情況是占位用的,方法返回兩個結果,而你只想要一個結果。
那另一個就用 “_” 占位,而如果用變量的話,不使用,編譯器是會報錯的。
參考鏈接
總結
以上是生活随笔為你收集整理的【Go】Go语言中的下划线的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel同一个单元格内多行数据拆分成多
- 下一篇: C语言——一元多项式定义求和 [单链表]