【golang踩坑日記】go install/build/run 讀取不到最新代碼問(wèn)題

執(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è)問(wèn)題,遷移代碼路徑帶來(lái)的問(wèn)題:

舊版代碼

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" // 注意:此處引用路徑并沒(méi)有隨著變更

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è)記錄,避免將來(lái)再踩坑~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容