草庐IT

go-import

全部标签

go - 如何在更改位置时更新导入

我看到在Go中您可以直接从Github导入包,例如:import"github.com/MakeNowJust/heredoc"我知道我在导入行中看到的路径不是URL,而只是包所在的路径(通常相对于$GOROOT/src/pkg或$GOPATH/src)。所以heredoc包很可能位于$GOPATH/src/github.com/MakeNowJust/heredoc目录中。现在假设包开发人员决定将代码库迁移到Bitbucket。所以现在库URL是bitbucket.com/muchMoreCoolerName/heredoc。他还在代码库中添加了一些新功能。我的问题是您将如何获得更新

go - 如何在使用 golang 中现有接口(interface)的同时添加更多功能?

假设我有一个接口(interface)Foo,我正在添加一个结构,它需要Foo的方法和一些额外的方法。在那种情况下,以下两个被认为是最佳实践?或者如果有其他更合适的第三种方式,请提出建议。方法一typeFoointerface{methodA()}typeBarstruct{}func(bBar)methodA(){...}func(bBar)methodB(){...}方法二typeFoointerface{methodA()}typeBarstruct{Foo//thiscanbeinitializedwithanyconcreteimplementationofFoo}func(

go - 为什么 Args 在函数初始化之前初始化?

src/os/proc.go://Argsholdthecommand-linearguments,startingwiththeprogramname.varArgs[]stringfuncinit(){ifruntime.GOOS=="windows"{//Initializedinexec_windows.go.return}Args=runtime_args()}当我在这里调试时,我发现Args在init函数之前被初始化。它在哪里初始化? 最佳答案 如评论所述://Initializedinexec_windows.go.s

go - `type foo struct` 和 `type foo []struct` 之间的区别

这些结构之间的主要区别是什么?typefoostruct{Namestring`json:"name"`}和typefoo[]struct{Namestring`json:"name"`} 最佳答案 typefoo1struct{Namestring`json:"name"`}typefoo2[]struct{Namestring`json:"name"`}简单理解为typefoo2[]foo1 关于go-`typefoostruct`和`typefoo[]struct`之间的区别,我们

go - 在 Delve 中通过源文件设置断点

如何通过源文件设置断点?我在tmp.go文件中有以下代码。packagemainfuncmain(){a,b:=1,2c:=a+bprintln(c)这行得通$dlvdebug./tmp.go(dlv)bmain.main:1Breakpoint1setat0x105395dformain.main()./tmp.go:4但这失败了$dlvdebug./tmp.go(dlv)b./tmp.go:4Commandfailed:Location"./tmp.go:4"notfound编辑:这行得通$dlvdebug./tmp.go(dlv)btmp.go:4Breakpoint1setat

go - channel 未缓冲时出现 fatal error : all goroutines are asleep - deadlock!

我试图理解我在channel未缓冲时遇到的错误:"fatalerror:allgoroutinesareasleep-deadlock!"packagemainimport"fmt"funcmain(){ch:=make(chanint)ch它在我缓冲channel后工作ch:=make(chanint,2) 最佳答案 通过非缓冲channel发送和检索数据都是阻塞进程。在您的代码中,您尝试发送数值1通过channelch.由于该操作是阻塞的,因此在当前行执行完成之前不会执行下面的代码。语句执行期间ch,同时没有进程正在运行以从ch

go - 如何获取指针的地址?

packagemainimport"fmt"funcmain(){varaint=20varip*intip=&afmt.Printf("aaddress:%x\n",&a)fmt.Printf("theadrressthatipstored:%x\n",ip)/*Itrytogettheaddressofvariableip*/fmt.Printf("theaddressofip:%d\n",&ip)}goruna.go结果:地址:c420016078ip存储的地址:c420016078ip地址:842350510120我的问题是:842350510120是正确的ip地址吗?

go - 为特定包运行 go test

我使用以下命令对特定包运行测试去测试fts-runrun_test.gocan'tloadpackage:packagefts:cannotfindpackage"fts"inanyof:/usr/local/Cellar/go/1.11.1/libexec/src/integration(from$GOROOT)/Users/i055555/go/src/fts(from$GOPATH)包裹看起来像gitproj/|----fts|-----command|-----run.go|-----run_test.go|----internal|-----fs.go|-----tb.go|

go - 编译二进制比运行慢 "go run"

我正在尝试解决代码谜题的出现(所以对于那些还没有完成第一天的人来说剧透警告),我遇到了一些我无法理解的事情。我有一个函数,它根据其他一些数字列表生成一个数字列表,并返回第二次遇到的第一个数字:funcfindFirstDoubleFrequency(freqs[]int)int{seen:=map[int]bool{0:true}freq:=0for{for_,f:=rangefreqs{freq+=fifseen[freq]==true{returnfreq}seen[freq]=true}}}当我使用gorun运行我的代码时,函数需要约15毫秒才能完成。但是,当我使用gobuild

go - 为结构动态设置键和值

我的问题是,我的key将具有非固定值,就像在python中一样,我们可以这样做:dict_={}data_=[{"name":"roy","text":"yayigotagift"},{"name":"dep","text":"mymumgimmeagift"},{"name":"roy","text":"anothergiftfrommyfan"}]fordataindata_:key=data["name"]ifkeyindict_:dict_[key]+=1//addmore1ifkeyalreadyindict_else:dict_[key]=1//setdictkeywith