执行go install
时老是报错,该错误对应的代码文件已修改,但似乎未读取到,网上翻了几个帖子,一种情况是go install
时,仅编译当前package的代码,其他package已生成.a文件的不会再重复编译,此种情况可以删除${GOPATH}/pkg/linux_amd64/**/
路径下对应的.a
文件后重新go install
编译!
但楼主遇到的是另一个问题,迁移代码路径带来的问题:
旧版代码
main.go旧版中引用了pkg1.go中定义的一个func:
package main
import "gitee.com/demo/pkg1"
func main() {
pkg1.Func("hello")
}
pkg1.go旧版
package pkg1
func Func(arg string) {
return
}
旧版中Func函数仅有一个参数
新版代码
pkg1.go新版修改了参数列表:
package pkg1
func Func(arg1, arg2 string) {
return
}
main.go新版相应的修改了传参列表:
package main
import "gitee.com/demo/pkg1" // 注意:此处引用路径并没有随着变更
func main() {
pkg1.Func("hello", "world")
}
目录变更
原src目录结构
src
└── gitee.com
└── demo
├── main.go
└── pkg1
└── pkg1.go
目录变更后结构
src
└── gitee.com
└── user // 新增了一层user目录
└── demo
├── main.go
└── pkg1
└── pkg1.go
由于代码是git clone
下载到本地,变更路径后,代码中的依赖引用关系并未改变,此时再在demo路径执行go install
时会报错:
# gitee.com/user/demo
./main.go:6:33: too many arguments in call to pkg1.Func
have (string, string)
want (string)
解决方法
要么恢复目录结构,要么修改代码的依赖引用路径,总之是个粗心引起的、容易踩坑的错误,做个记录,避免将来再踩坑~
有疑问加站长微信联系(非本文作者)