go?build失敗報(bào)方法undefined的解決過程
記一次在寫cli腳本的時(shí)候,碰到的一個(gè)問題。
問題
自己是寫服務(wù)端的,有時(shí)候會(huì)寫一些cli腳本去跑測試。習(xí)慣main.go寫主流程,其他子文件寫方法,這樣子代碼不會(huì)都在main.go里面。但這么寫直接GoLand點(diǎn)擊main旁邊的按鈕是可以執(zhí)行,一旦用go build就報(bào)某個(gè)引用的方法,undefined。
范例代碼
//main.go package main import "fmt" func main() { fmt.Println("add result : ", Add(1, 2)) fmt.Println("multi result : ", Multi(1, 2)) }
//operation.go package main func Add(a, b int) int { return a + b } func Multi(a, b int) int { return a * b }
注意這是兩個(gè)文件,不是都在main.go里面,package都是main。這兩個(gè)文件,都在同一個(gè)目錄下面。
操作
直接點(diǎn)擊run,結(jié)果是有的,也沒有報(bào)錯(cuò)
go build就報(bào)錯(cuò),原本調(diào)用的方法undefined
但是上一步可以執(zhí)行呀,也有結(jié)果
解決
原因是go語言中main包和其他package是不同的,它定義了一個(gè)獨(dú)立可執(zhí)行程序,而不是一個(gè)庫。一般的包名是.go文件的目錄名,編譯器會(huì)將同一目錄下的不同.go文件視作同一個(gè)包。但是main包的目錄不是main目錄,所以問題就是在包的引用和定義上,如果想在main包中添加函數(shù)調(diào)用,2個(gè)方法:
- 寫在main函數(shù)所在的go文件中;
- 創(chuàng)建另一個(gè)package,main函數(shù)去調(diào)用這個(gè)包?!窘ㄗh】
修改后代碼
// main.go package main import ( "fmt" "train/package/operation" ) func main() { fmt.Println("add result : ", operation.Add(1, 2)) fmt.Println("multi result : ", operation.Multi(1, 2)) }
operation.go放到一個(gè)單獨(dú)的包
// operation.go package operation func Add(a, b int) int { return a + b } func Multi(a, b int) int { return a * b }
此時(shí)再go build就可以解決了。
總結(jié)
到此這篇關(guān)于go build失敗報(bào)方法undefined的文章就介紹到這了,更多相關(guān)go build失敗報(bào)方法undefined內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang基礎(chǔ)學(xué)習(xí)之map的示例詳解
哈希表是常見的數(shù)據(jù)結(jié)構(gòu),有的語言會(huì)將哈希稱作字典或者映射,在Go中,哈希就是常見的數(shù)據(jù)類型map,本文就來聊聊Golang中map的相關(guān)知識(shí)吧2023-03-03etcd通信接口之客戶端API核心方法實(shí)戰(zhàn)
這篇文章主要為大家介紹了etcd通信接口之客戶端API核心方法實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06GoLang并發(fā)編程中條件變量sync.Cond的使用
Go標(biāo)準(zhǔn)庫提供Cond原語的目的是,為等待/通知場景下的并發(fā)問題提供支持,本文主要介紹了Go并發(fā)編程sync.Cond的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下2023-01-01golang struct 實(shí)現(xiàn) interface的方法
這篇文章主要介紹了golang struct 實(shí)現(xiàn) interface的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07