草庐IT

go - 在 "go-getable"包中选择不同的可执行文件名称

是否可以有一个“go-getable”的cli-package(packagemain),但二进制文件安装在不同的名称下?例如拥有一个仓库github.com/exaring/foo-cli但是gogetgithub.com/foo/foo-cli会安装一个名为foo的二进制文件(不是foo-cli)?重点是要有一个富有表现力的存储库名称,但要有一个简短且易于键入的可执行文件。 最佳答案 如果您同意用户运行gobuild而不是goget,您可以这样做:gobuild-ofoogithub.com/foo/foo-cli否则,您可以将

ubuntu - 如何在 vagrant provision 期间安装 golang 包?

关于如何使用vagrantprovision安装golang或如何设置$GOPATH环境变量,以便它在启动时可用,也有类似的问题。但是,这个问题是关于如何设置$GOPATH等,以便变量在供应脚本的后续步骤中可用(以及其他重要的一切关于golang就此而言)。我正在使用ubuntu镜像。具体来说,我想在my_provision.sh中运行这些步骤:去获取github.com/saymedia/terraform-s3-dir去安装github.com/saymedia/terraform-s3-dir当我在vagrantssh之后运行以下命令时,它就会正常工作:terraform-s3-

windows - 如何强制 Windows godoc 在 golang 中更新本地网络服务器上的私有(private)包文档?

在Windows上运行本地godoc网络服务器时,如何强制godoc更新我的私有(private)包文档?在Windows上运行命令:“godoc-http:6060”不会更新私有(private)包中的新godoc注释。当我第一次运行该命令时,它获得了已经存在但自终止并重新启动该命令以来尚未更新的注释。是否有缓存或我可以清除的东西?我在任何地方都找不到关于此的任何信息。有一个非常古老的github问题(显然已修复)由于年龄而被卡住并处理当前(和我自己的)go1.8windows/amd64安装中godoc中不存在的-sync选项:https://github.com/golang/g

eclipse - goclipse 错误 "resource doesn' t 有对应的 go 包”

我检查问题数据库并找到这个:link但问题并没有解决。我的电脑有windows10和eclipseNeon.3Release(4.6.3),安装了goclipse,我的Go设置是:Go安装:C:\GoEclipseGOPATH:C:\Go\workspace工具路径是:gocode:C:\Go\bin\bin\gocode.exe大师:C:\Go\bin\bin\guru.exegodef:C:\Go\bin\bin\godef.exe但我认为工具有用。我搜索了3天。感谢您的帮助。 最佳答案 您应该在src文件夹内的文件夹中编写代码

go - 为什么 nsqlookupd 包使用上下文?

当我阅读nsq源码的nsqlookupd部分时,我发现作者使用了一个Contexttruct来包装一个NSQLookupdstruct而没有为Context使用其他的funcs。我不知道为什么我们这样使用它,我们有什么好处可以通过这种方式吗?下面的源代码在这里。谢谢!上下文.gotypeContextstruct{nsqlookupd*NSQLookupd}nsqlookupd.gofunc(l*NSQLookupd)Main(){ctx:=&Context{l}tcpListener,err:=net.Listen("tcp",l.opts.TCPAddress)iferr!=nil

go - Intellij 无法加载文件.go 同一个包

我在Intellij中运行文件main.go时遇到问题。Main.go和Common.go同包main。我在Intellij中运行Main.go然后控制台日志显示消息错误:“.\Main.go:9:undefined:showMsg”。showMsg是Common.go的一个函数 最佳答案 Thisvideo应该告诉你如何解决这个问题。您基本上需要使用类型为GoApplication的运行配置并使用包类型而不是文件类型。 关于go-Intellij无法加载文件.go同一个包,我们在Sta

go - 如何批量更改 GO 包别名?

我想重命名许多文件中的许多包。同时,我也想更改包别名。有没有工具可以做到这一点?我在go/x/tools中找到的那些只会更改包导入。我想从导入“github.com/a/b”到导入b"github.com/c/d" 最佳答案 标准工具有一个很酷的技巧。gofmt有一个选项-rrule其工作方式如下:gofmt-w-l-r"github.com/a/b->github.com/c/d".其中rule具有格式pattern->replacement参见gofmtdocs还有一个gofix工具,不过没试过,见docs和blog

go - 导入特定包

我正在尝试解决依赖性问题:假设我想将main.go中的代码与我的数据库完全分离,我为此创建了2个包:dummy和postgres。/app/--main.go/dummy/--dummy.go/postgres/--postgres.go一切正常,我只需要在我的main.go中选择我想导入哪个包来获得一个行为或另一个......但是有没有办法在构建main.go?如果有更惯用的方法来实现这一点,我当然非常感兴趣! 最佳答案 您可以通过构建标签利用Go条件构建并定位您对main.go的编译。引用这个article并将您的想法付诸行动。

logging - 使用 io.Multiwriter 跨包/子包创建日志

我是Go的新手。目前,我正在编写一个工具来捕获所有stdout输出,并将它们合并到一个新文件中。为此,我使用了io.Multiwriter。但是,我的问题在于试图跨包和子包捕获所有stdout输出。目前,我的方法是创建一个新包,它对所有日志记录具有独占作用。每当其他包/子包之一有一些输出字符串时,我会将字符串发送到日志包,然后将多写到日志和标准输出。这听起来合理吗?如果是这样,通用日志记录包API应该是什么样的?另外,将用于输出/日志记录的字符串传递到日志包的好方法是什么?谢谢! 最佳答案 我想我会很好地使用已经可用的记录器包来满足

go - pprof(对于 golang)不显示我的包的详细信息

我一直在尝试使用pprof分析我的go应用程序(evm-specification-miner),但输出并不是很有用:(pprof)top5108.59minsof109.29minstotal(99.36%)Dropped607nodes(cum=0.98mins)flatflat%sum%cumcum%107.83mins98.66%98.66%108.64mins99.40%[evm-specification-miner]0.36mins0.33%98.99%6mins5.49%net.dialIP0.30mins0.28%99.27%4.18mins3.83%net.list