草庐IT

test_slice

全部标签

go - 如果长度 > 100,则删除 slice 中的第一项

当RSS提要更新时(现在不是,只是虚拟数据),新项目将附加到“提要”slice。随着时间的推移,这可能意味着它包含数百万个项目,我不希望这样。因此,当slice中的项目超过100个时,它应该从顶部(项目0)开始删除项目。在此示例中,我使用的RSS文件只有100个项目,因此下面的示例代码应在50个项目后从顶部删除:packagemainimport("fmt""github.com/SlyMarbo/rss""time")varfeed*rss.Feedvardirectory="./dump"funcmain(){for{checkRSS()//Checkeveryminuteiffe

unit-testing - golang 中的单元测试

我目前正在考虑在Go中为我的服务创建一些单元测试,以及在该功能之上构建的其他功能,我想知道在Go中进行单元测试的最佳方法是什么?我的代码如下所示:typeBBPeripheralstruct{client*http.Clientendpointstring}typeBBQuerystruct{Namestring`json:"name"`}typeBBResponsestruct{Brandstring`json:"brand"`Modelstring`json:"model"`...}typePeripheralstruct{BrandstringModelstring...}typ

go - 在 Go 中,如何将接口(interface) slice 传递给需要不同兼容接口(interface) slice 的对象?

这个问题在这里已经有了答案:Typeconvertingslicesofinterfaces(9个回答)关闭6年前。我有两个接口(interface),A和B。碰巧A包含B。最后,我有一个A的具体实现(称之为Impl),根据定义,它也实现了B。例如:typeAinterface{Close()errorRead(b[]byte)(int,error)}typeImplstruct{}func(IImpl)Read(b[]byte)(int,error){fmt.Println("Inread!")return10,nil}func(IImpl)Close()error{fmt.Prin

testing - 在仅适用于某些版本的 golang 中运行测试

这个问题在这里已经有了答案:HowdoIskipatestsfileifitisrunonsystemswithgo1.4andbelow?(2个答案)关闭6年前。我这里有一个库(https://github.com/turtlemonvh/altscanner),其中包含将自定义扫描仪的功能与bufio.Scanner进行比较的测试.特别是,我将我的方法与theBuffermethod进行比较哪个wasn'taddeduntilgo1.6.我的实际代码适用于gobackto1.4的版本,但我想包括这个使用Buffer的测试(我也想添加一个基准测试)bufio.Scanner的功能对象

使用 slice 类型的输入和输出 channel 去并发工作例程

我对Go语言比较陌生。尽管我不希望如此,但我可能会用一个愚蠢的问题来打扰你。我提前道歉,以防万一......这是我的示例:我定义了一个从main()调用的worker()函数作为一组并发Go例程。输入和输出数据通过slice类型[]int的输入和输出channel提供。在一种情况下,一切都按预期工作,在另一种情况下,结果是错误的。查看代码中的注释和代码下方的程序输出。老实说,我看不出这两种代码变体之间的实际区别。我在这里错过了什么?感谢您的任何建议!packagemainimport"fmt"import"runtime"funcworker(x_ch正确的输出(变体1):mainx:

testing - 测试 Go 时如何跨包共享设置和拆卸方法?

假设我有两个包foo和bar。每个包都有文件和一个测试文件:foo---widget.go---widget_test.gobar---wingding.go---wingding_test.go现在对于两个测试(widget_test.go和wingding_test.go),我想分享一些设置代码。我知道我可以将这段代码放在main_test.go中的每个包中。但我显然不想在两个地方复制/粘贴代码。那么我可以将此代码放在哪里以便跨包共享呢? 最佳答案 把它放在另一个包baz中,foo和bar都在他们的测试中导入。我们将其用于测试中

Golang 界面 slice

我正在尝试遍历接口(interface)片段以通过id查找我的特定结构并更改属性。typeAstruct{IDIDSteps[]Step}typeStepinterface{}typeBstruct{IDID}typeCstruct{IDID}func(s*A)findStepByID(idID)(Step,error){forindex,step:=ranges.Steps{switchstepType:=step.(type){caseA:ifstepType.ID==id{returnstep,nil}caseB:ifstepType.ID==id{returnstep,nil}

arrays - GoLang : Check if item from Slice 1 contains in Slice 2. 如果是,删除 Slice 2

我有一个字符串数组:slice1[][]string。我使用for循环获得了我想要的值:for_,i:=rangeslice1{//[string1string2]fmt.Println("server:",i[1])//onlywantthesecondstringinthearray.}现在我有另一个字符串数组:slice2[][]string我也使用for循环获取它的值:for_,value:=rangeoutput{//fmt.Println(value)//Prints:[200K,2,"a",22,aa-d-2,sd,MatchingString,a]}我想遍历slice1

testing - go中接口(interface)模拟的方法

如果我有一个如下所示的handlerfunc。“模拟”或注入(inject)包装某些对象以进行测试的接口(interface)的最佳方法是什么?funcGetOrCreateUser(whttp.ResponseWriter,r*http.Request){user:=GetUserFromContext(r.Context())ifcreated:=user.GetOrCreate();created{smtp.SendEmail(...)return}else{w.Write([]byte("HelloUser!"))}}我遇到的唯一方法似乎是这样做:typeMailerinter

inheritance - 具有混合结构类型的 Go 映射和 slice

我正在尝试通过创建一个能够创建投影的简单事件存储来学习如何使用Go。我被困在如何使用包含混合类型结构的slice和映射上。这样做的要点是,我希望开发人员根据需要在各个字段中创建尽可能多的实现IEntity和IEvent的结构。我来自JavaScript/Node.js背景,具有一些C/C++/Java的基本知识,我可能在这里寻找类/继承模式并需要一些帮助来了解如何在Go中获得相同的功能.packagemainimport("sync""time"uuid"github.com/satori/go.uuid")//IEntitydescribesanentity,astructthati