我创建了一个项目结构,如main.go和foo/bar.go在main.go中,导入foo包并用作foo.functionName()。现在我需要在bar.go中编写swagger文档。当我这样做时,以以下错误消息结束,unabletodeterminepackagefor/PATH_TO_PROJECT/foo/bar.go 最佳答案 确保在foo/bar.go中声明的包是packagefoo。那么在main.go文件中你要访问的函数应该以大写字母开头。即foo/bar.gopackagefoo//PrintBarwithextr
有没有办法不用滚动到页面顶部,就可以在GoLand中看到当前包的名称?我能做的最快的是(使用Vi键)键入magg(创建标记a,转到顶部)然后`a到回来。这还不错,但理想情况下我希望它始终可见。有一个顶部栏显示一些简洁的上下文信息。也许有办法配置它?我还没有弄清楚如何。结构面板只列出符号等。 最佳答案 您可以调用QuickDocumentation功能,通过Windows/Linux上的Ctrl+Q或macOS上的F1,在包中定义的任何标识符上,输出的第一行将是名称它在其中定义的包。这是一个例子:另一种选择是调用导航栏,在Window
情况:假设我有一个名为mypackage的包。它公开了一个名为Build()的方法,该方法返回一个由名为thirdpartypackage的第三方库公开的具体结构,例如如下图所示:packagemypackageimporttpp"github.com/thirdpartycompany/thirdpartypackage"funcBuild()*tpp.SharedStruct{//...implementation}公开SharedStruct的包在mypackage中出售,因为我想分发它并使该包独立。问题:将mypackage导入另一个项目并在我的(集成)测试中使用thirdpa
例如,给定一个依赖于包B和包C的包A,其中包C也取决于包D-有没有办法输出这些信息?(使用销售工具或其他方式)govend输出的vendor.yaml不包含传递依赖信息-Gopkg.toml文件也不包含dep的输出,据我所知。由Golang1.11的mod生成的go.mod文件确实将一些依赖项注释为//indirect-但它没有使用有关它们是哪个依赖项的任何信息来注释依赖项通过拉入。 最佳答案 你试过了吗https://github.com/KyleBanks/depth?乍一看,它确实提供了一个不错的依赖树。
我正在练习编写惯用的Go代码并发现接口(interface)应该在使用它们的包中声明,因为它们是隐式的。但是我遇到了这种情况,在第二个包(包b)中,我想要一个函数来调用包a中的结构的接收函数,而不紧密耦合它。很自然地,我在包b中声明了一个接口(interface),带有我想从包a调用的函数的签名。问题是这个函数接受一个特定类型的参数,这个参数是在包a中声明的接口(interface)。因为我不希望包b导入包a,所以我在包b中定义了一个接口(interface),其签名与包a中存在的签名完全相同。下面的playground链接显示了示例代码。Playgroundpackagemainim
我有一个有两种方法的类型;添加&关闭。Add方法被并发访问,它应该检查是否曾经调用过Close。typefoostruct{closedbool}func(f*foo)Close()error{f.closed=true...}func(f*foo)Add(...)error{iff.closed{returnErrClosed}...}这是竞争条件吧?那么在这种情况下使用原子存储/加载是否有意义?typefoostruct{closedint32}func(f*foo)Close()error{atomic.StoreInt32(&f.closed,1)...}func(f*foo)
例如:packagefooimport("appengine/blobstore")funcmain(){varblobblobstore.BlobInfo...}给我这个错误:未定义:BlobInfo有没有办法让我无需复制代码就可以创建这个结构? 最佳答案 如果blobstore.BlobInfo是一种类型,则在另一个包中声明该类型的变量,例如:varblobblobstore.BlobInfo语法varfoo=bar.Qux尝试创建varfoo并通过在推断bar.Quxbar.Qux的值来初始化它的类型。编辑:声明一个类型为T的
我最近注意到gobuild-a将构建几乎所有但不是我的$GOPATH子目录中的所有包。gobuild使用什么算法来决定构建什么?documentationforgo命令没有指定,或者我看错了。 最佳答案 如果未指定路径,“gobuild”命令会在当前目录中构建包。文档是here.“gobuild”命令还会构建任何过时的依赖项。 关于go-`gobuild`在没有指定要构建的特定包的情况下如何决定构建哪些子目录?,我们在StackOverflow上找到一个类似的问题:
当我尝试使用CodeBuildgolang镜像1.10构建我的golang项目时,它失败了,无法找到子包。一些背景:应用程序组织如下:/go/src/company/app/go/src/company/app/sub1/go/src/company/app/sub2etc...这在我的开发机器上构建良好。但是,当通过codebuild拉取时,它被拉入不同的目录(/codebuild/output/srcNNN/src/),其中根据触发构建的内容而有所不同。我最初是通过将代码从它被拉到golang目录(/codebuild/output/srcNNN)来让它工作的,但是由于GOPATH
我是新手,无法真正理解它。我想在每个log4go.Error("Anerror")调用中覆盖go"log4go"中现有包中的func。最好的方法是什么?如果我想增强现有方法,还有什么办法?如果是基本问题请多多包涵。 最佳答案 你根本无法做到这一点。做不可能的事情没有“最佳方法”。你只有选择:forklog4go并打补丁。不要使用log4go.Error,而是使用您自己的包装器myError,它包装了log4go的Error函数。重新设计或寻找不同的日志记录包。 关于go-如何覆盖现有go