Go 語言 import 底線 _ 使用說明

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

 

// main project main.gopackage mainimport ("fmt"//_ "main/hello/imp""main/hello/imp""runtime")func main() {for skip := 0; ; skip++ {pc, file, line, ok := runtime.Caller(skip)if !ok {break}fmt.Printf("skip = %v, pc = %v, file = %v, line = %v\n", skip, pc, file, line)}imp.Print()}
package impimport ("fmt")func init() {fmt.Println("imp-init come here.")}func Print() {fmt.Println("Hello World! in package imp")}

輸出:

imp-init come here.skip = 0, pc = 4762118, file = C:/Go/mycode/src/main/main.go, line = 13skip = 1, pc = 4366150, file = C:/Go/src/runtime/proc.go, line = 185skip = 2, pc = 4513537, file = C:/Go/src/runtime/asm_amd64.s, line = 2197Hello World! in package imp

如果修改 main.go 的 import 為一下形式:

// main project main.gopackage mainimport ("fmt"_ "main/hello/imp" //這裡前面加上了 _//"main/hello/imp""runtime")func main() {for skip := 0; ; skip++ {pc, file, line, ok := runtime.Caller(skip)if !ok {break}fmt.Printf("skip = %v, pc = %v, file = %v, line = %v\n", skip, pc, file, line)}imp.Print() //這已經將會提示編譯失敗}

輸出:

C:/Go/bin/go.exe build -i [C:/Go/mycode/src/main]# main.\main.go:20: undefined: imp in imp.Print錯誤: 進程結束代碼 2.

前面加上了 _   說明只能調用 init.go 裡面的 init() 函數, 當然你不能顯示的在 main.go 裡面調用

imp.init()

// main project main.gopackage mainimport ("fmt"_ "main/hello/imp"//"main/hello/imp""runtime")func main() {for skip := 0; ; skip++ {pc, file, line, ok := runtime.Caller(skip)if !ok {break}fmt.Printf("skip = %v, pc = %v, file = %v, line = %v\n", skip, pc, file, line)}imp.init()//imp.Print()}

輸出:

C:/Go/bin/go.exe build -i [C:/Go/mycode/src/main]# main.\main.go:19: undefined: imp in imp.init錯誤: 進程結束代碼 2.

 

---------------------------------------------------------------------------------------------------

import(. "fmt") 這個點操作的含義就是這個包匯入之後在你調用這個包的函數時,你可以省略首碼的包名,也就是前面你調用的fmt.Println("hello world") 可以省略的寫成Println("hello world")import(f "fmt") 別名操作調用包函數時首碼變成了重新命名的首碼,即f.Println("hello world")

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.