Go 主程序包中无法识别要导入的更新

Go 主程序包中无法识别要导入的更新,go,Go,我正在做一个项目,有几个我已经创建的包,我正在导入到我的主项目中 现在,当我把代码移到一个外部包中时,我可以从我的主项目中调用它的函数。但一旦我向外部包中添加新函数,我总是会得到一个未定义的函数。。。生成过程中出错 我已尝试重建我的外部包。。但是没有运气。我能够更新对自定义包的引用的唯一方法是重命名外部包和文件夹 例如,如果我在/project/blah/blah.go中有以下内容: package blah func DoSomethingCool(s string) { fmt.P

我正在做一个项目,有几个我已经创建的包,我正在导入到我的主项目中

现在,当我把代码移到一个外部包中时,我可以从我的主项目中调用它的函数。但一旦我向外部包中添加新函数,我总是会得到一个未定义的函数。。。生成过程中出错

我已尝试重建我的外部包。。但是没有运气。我能够更新对自定义包的引用的唯一方法是重命名外部包和文件夹

例如,如果我在/project/blah/blah.go中有以下内容:

package blah

func DoSomethingCool(s string) {
    fmt.Print(s)
}
我可以在我的主应用程序项目/web/main.go中将这个func称为blah.DoSomethingCoolHello-World。现在,这项工作如预期的那样。但现在,如果我将包blah更新为:

package blah

func DoSomethingCool(s string) {
    fmt.Print(s)
}

func DoSomethingElseEvenCooler(p string, q string) {
    fmt.Print(
        fmt.Sprint(p, q),
    )
}
我不能称blah.DoSomethingElseEvenCoolerp,q为blah.DoSomethingElseEvenCoolerp,即使重建了blah.DoSomethingElseEvenCoolerp。我最终得到了一个func未定义的错误

但是,如果我将blah重命名为foo,并将路径重命名为/project/foo/foo.go,那么我可以调用foo.DoSomethingElseEvenCoolerp,q。似乎对程序包blah的引用没有更新,即使它已更改。当我在构建我的主要项目时,有没有办法强制这样做

还是我只是错过了什么。。。运行

go install
在外部包上修复了我的问题。谢谢

在您的外部软件包上使用go install,或者直接在最终程序包上进行构建、安装甚至测试。这些都会重新构建所有依赖项,并添加一个-v来查看它们构建了哪些包。他们不重建依赖包的唯一方法是,如果文件修改时间都搞砸了,那么您就有更大的问题。