【golang踩坑日记】go install/build/run 读取不到最新代码问题

王小奕er · · 707 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

执行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)

解决方法

要么恢复目录结构,要么修改代码的依赖引用路径,总之是个粗心引起的、容易踩坑的错误,做个记录,避免将来再踩坑~


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:王小奕er

查看原文:【golang踩坑日记】go install/build/run 读取不到最新代码问题

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

707 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传