執(zhí)行go install
時(shí)老是報(bào)錯(cuò)乌昔,該錯(cuò)誤對(duì)應(yīng)的代碼文件已修改,但似乎未讀取到尾组,網(wǎng)上翻了幾個(gè)帖子忙芒,一種情況是go install
時(shí),僅編譯當(dāng)前package的代碼讳侨,其他package已生成.a文件的不會(huì)再重復(fù)編譯呵萨,此種情況可以刪除${GOPATH}/pkg/linux_amd64/**/
路徑下對(duì)應(yīng)的.a
文件后重新go install
編譯!
但樓主遇到的是另一個(gè)問題跨跨,遷移代碼路徑帶來的問題:
舊版代碼
main.go舊版中引用了pkg1.go中定義的一個(gè)func:
package main
import "gitee.com/demo/pkg1"
func main() {
pkg1.Func("hello")
}
pkg1.go舊版
package pkg1
func Func(arg string) {
return
}
舊版中Func函數(shù)僅有一個(gè)參數(shù)
新版代碼
pkg1.go新版修改了參數(shù)列表:
package pkg1
func Func(arg1, arg2 string) {
return
}
main.go新版相應(yīng)的修改了傳參列表:
package main
import "gitee.com/demo/pkg1" // 注意:此處引用路徑并沒有隨著變更
func main() {
pkg1.Func("hello", "world")
}
目錄變更
原src目錄結(jié)構(gòu)
src
└── gitee.com
└── demo
├── main.go
└── pkg1
└── pkg1.go
目錄變更后結(jié)構(gòu)
src
└── gitee.com
└── user // 新增了一層user目錄
└── demo
├── main.go
└── pkg1
└── pkg1.go
由于代碼是git clone
下載到本地潮峦,變更路徑后,代碼中的依賴引用關(guān)系并未改變勇婴,此時(shí)再在demo路徑執(zhí)行go install
時(shí)會(huì)報(bào)錯(cuò):
# gitee.com/user/demo
./main.go:6:33: too many arguments in call to pkg1.Func
have (string, string)
want (string)
解決方法
要么恢復(fù)目錄結(jié)構(gòu)忱嘹,要么修改代碼的依賴引用路徑,總之是個(gè)粗心引起的耕渴、容易踩坑的錯(cuò)誤拘悦,做個(gè)記錄,避免將來再踩坑~