草庐IT

go-import

全部标签

go - 如何在循环中创建 channel ?

我正在学习go中的并发性及其工作原理。我想做什么?遍历数据slice为必需/需要的数据创建结构为该结构创建channel使用gorutine调用workerfunc并将该channel传递给该例程使用channel中的数据做一些处理将处理后的输出设置回channel在主线程中等待我们启动的所有channel的输出我试过的代码packagemainimport("fmt""github.com/pkg/errors""time")typesubjectstruct{NamestringClassstringStartDatetime.TimeEndDatetime.Time}typewo

VS 代码中的 Go linter 不适用于跨多个文件的包?

我已经在MacOS上的VisualStudioCode中安装了Go扩展(版本0.11.4):但是,我发现linter不会“拾取”定义在同一个包中的函数,而是在不同的文件中。例如,如果我在同一目录中创建一个文件foo.gowithpackagefoobarimport"fmt"funcmain(){fmt.Println(SayHello())}和一个文件bar.gowithpackagefoobarfuncSayHello()string{return"Hello,world!"}然后在foo.go中我得到一个linter错误,指出SayHello是一个undeclaredname:我

go - 未导入 Github 分支中的更改

我正在编写一个MIDI解析器,它可以拆分MIDI文件并调整不同轨道上的音量以允许特定的语音隔离以帮助练习。我正在使用Go库,EasyMIDI.但是,我遇到了库未涵盖的用例,因此我fork了存储库并进行了更改,以在短期内解决我的问题。在我的go.mod和import语句中使用我的forkGithubURL时,我能够成功构建,但我所做的代码更改没有反射(reflect)出来。我将函数GetChannel()添加到接口(interface)中,因此应该将其列为一个选项。当我点击另一个最初实现的功能的源代码时,我看到我的VSCode在抓取代码时引用了非fork的存储库(请参见下面的屏幕片段)。

arrays - 在 Go 中初始化数组时使用 spread

我有一个重复的值列表,我想在初始化多个数组时重复使用这些值:packagemainimport("fmt")funcmain(){vari=[]int{1,2,3}vara=[]int{2,i...,3}fmt.Println(a)}上面的代码给出了以下错误:./prog.go:9:20:syntaxerror:unexpected...,expectingcommaor}我想使用扩展...运算符,但这在初始化数组时似乎不可能。我是不是遗漏了什么或者不允许传播? 最佳答案 将slice传递给可变参数函数时,您只能将...与slice

go - 如何强制编译器控制值/值指针函数参数?

处理go的函数时,我发现在使用“通用”接口(interface){}类型时,无法强制编译器控制我是传递值参数还是值指针参数。funcf(ointerface{}){...}最明显的解决方案是使用以下修改:funcf(o*interface{}){...}虽然编译成功了,但我发现这一步不对。那么,有什么方法可以表明我想传递任何指针? 最佳答案 你必须使用reflection.import"reflect"funcf(ointerface{}){if_,ok:=reflect.Typeof(o).(*reflect.PtrType);!

compilation - Windows 64 位的 .go 文件编译错误

我最初的问题是,this.peterSO正确回答了这个问题。但是,当我尝试执行.go程序时,我发现了类似this的错误。对于程序1和this对于程序2.任何人都可以帮助我,如何解决这个问题? 最佳答案 您已经安装了多个版本的Go,包括release/release.r60.3和weekly.2011-09-01forwindows386。如果您的PATH环境变量指向8gfor[windows386release.r60.310076]但您的GOROOT环境变量指向[windows386weekly.2011-09-019631]的包

go - 变长 channel 创建

我正在尝试编写一个队列,我需要“增加”我的缓冲channel,有没有一种方法可以做到这一点而不必创建一个新队列并将元素移动到新队列? 最佳答案 标准channel是不可能的。但是,通过使用带有一些技巧的中间goroutine,您可以制作出等效的东西。但是,它会比本地channel慢一些。这是作为channel包中的ResizableChannel实现的(免责声明:我写的)。godoc:https://godoc.org/github.com/eapache/channels#ResizableChannelgithub:https:

Go:为什么结构 "instantiated"与其他类型不同?

在golang中,结构的实例化不同于“常规”类型:如果是常规类型:MyFloat(2)如果它是一个结构:MyFloat{2}这有什么特别的原因吗?packagemainimport("fmt")typeMyFloatfloat64typeMyFloat2struct{Xfloat64}funcmain(){f1:=MyFloat(2)f2:=MyFloat2{3}fmt.Println(f1)fmt.Println(f2)} 最佳答案 MyFloat(2)是一个conversion.MyFloat2{3}是一个compositeli

inheritance - 根据 Go 中的接收器类型更改函数行为

我希望函数的行为根据接收者而改变。或者实际上,我想要一种方法能够将不同的接收器作为输入。例如typehandlerfunc(http.ResponseWriter,*http.Request,*Context)typerequireloggedinhandlerhandlerfunc(hhandler)ServeHTTP(whttp.ResponseWriter,r*http.Request){ctx:=setupContext(...)//NEXTLINEISTHEKEYLINEif(reflect.TypeOf(h)==main.requireloggedinhandler){if

go - 从 100 x 100 QR 码创建二维位数组

给定一个尺寸为100x100的QR码,我需要制作一个二维位数组(array[100][100]将包含1或0)。为了更好地了解我正在尝试制作的阵列,lookatthearraygiveninthisStackOverflowquestion.经过几个小时的搜索,我在GoogleCode上找到了一个函数这似乎可以完成工作。问题是代码是在.go文件中给出的,我的电脑无法打开该文件。理想的解决方案要么提供另一种语言的解决方案,要么建议我应该如何使用我在GoogleCode上找到的代码。预先感谢您的帮助! 最佳答案 如果您正在寻找将url(或