草庐IT

test_slice

全部标签

go - 将 slice append 到 slice 的 slice

我有数据结构:typePosList[]inttypeInvertedIndexstruct{CapacityintLenintIndexList[]PosList}我对Add方法有疑问:func(ii*InvertedIndex)Add(posListPosList,docIdint){ifii.Len==ii.Capacity{newIndexList:=make([]PosList,ii.Len,(ii.Capacity+1)*2)fori:=0;i或者,我尝试这样的事情:func(ii*InvertedIndex)Add(posListPosList,docIdint){ifi

struct - 指向结构 slice 的预期指针

我正在使用golang开发服务器。我有一个auth-helper,它使用安全token对用户进行身份验证(它是一个测试)。当我在AuthUsingCredentials函数中查询(我正在使用dep)时出现错误,它输出以下错误:"Expectedpointertostructslice*[]struct"如果我将varresult*entities.User更改为varresult[]entities.User然后打印result[0]它会工作,但随后会输出:"cannotuseresult[0](typeentities.User)astype*entities.Userinargum

dictionary - 在 Go 中使用包含 slice 字段的结构作为映射键的惯用方法是什么?

我有一个包含slice的结构,我想将它用作映射的键​​。我知道这是不允许的,因为目前没有为Go中的slice定义相等性。我也知道我不能覆盖结构的相等性以手动进行slice比较。我的问题是:完成我在这里尝试做的事情的最惯用的方法是什么?这是一些使结构更清晰的示例代码:packagemainimport"fmt"typeInternalStructstruct{item1,item2bool}typeContainerStructstruct{internals[]InternalStruct}funcmain(){container1:=ContainerStruct{}containe

unit-testing - 真正的单元测试总是可以并行运行吗?

背景:我正在编写大量go代码,使用gotest工具和提供的"testing"包进行测试。我所做的大部分测试都是TDD规程中的单元测试。这些被测试的“单元”永远不允许依赖于有状态的外部性,如持久存储、网络跃点等,但通常在“构造函数/构建器”函数中接收这些外部性的虚假内存实现(是的,我知道它们不是传统意义上的构造函数)。问题:gotest工具总是以相同的确定顺序运行测试函数,这一直困扰着我。在某些情况下,这允许竞争条件隐藏在代码中。找到这些错误的一种方法是设置-race标志。另一个可能是始终并行运行单元测试......问题:是否存在曾经孤立单元测试不能或不应该总是并行运行的情况(使用-并行

go - 如何确保 slice 使用的是另一个 slice 的副本而不是对它的引用?

我正在学习GO,但我有一个理论问题。如何使用slice的副本而不是对它的引用?packagemainimport"fmt"funcmain(){//slicecontaining3itemsslice1:=[]int{1,2,3}//makeanemptysliceslice2:=make([]int,2,5)//createslice3byappendingint4toslice2slice3:=append(slice2,4)//print[004]fmt.Println(slice3)//copyelementsofslice1ontoslice2copy(slice2,slic

go - 将 slice/数组传递给另一个结构

我有以下适合我的代码。params:=&cloudformation.CreateStackInput{StackName:aws.String(d.MachineName),TemplateURL:aws.String(d.CloudFormationURL),Parameters:[]*cloudformation.Parameter{{ParameterKey:aws.String("KeyName"),ParameterValue:aws.String(d.KeyPairName),},},}我想外部化参数的创建,所以我创建了以下方法。func(d*Driver)createP

reflection - 将 slice 复制到反射数组中

我有一个看起来像这样的结构:typeRecordstruct{NamestringQuestionType[2]byte//ArraymaybearbitrarylengthClass[3]byte}我试图用bytes.Buffer中的字节填充结构(由于字节数据中的一些额外复杂性,我无法使用binary.Read。)我正在使用reflect包迭代结构的元素,并从bytes.Buffer中读取到结构中。funcfillStructure(buffer*bytes.Buffer)*Record{//Thisishard-codednow,butwillbepassedinasaninter

go - 附加到 slice 的多个实例

如果我有两个指向slices1、s2的指针,它们最初指向同一个slice,是否可以附加到其中一个slice并让另一个slice也指向更新后的slice?这似乎是一个问题,因为如果容量不足,附加到slice可能会创建一个新的slice,其中的条目会被复制过来。以下是GoPlayground上的一个稍微复杂的版本,更接近我的用例。即,我的节点具有指向由slice实现的(全局)队列的指针。当一个节点更新全局队列时,我希望它反射(reflect)在另一个节点指向的slice中。https://play.golang.org/p/NG11HbLBrI 最佳答案

Golang - 为什么字符串 slice 元素不包含在 exec cat 中,除非我对它进行排序

我在golang中遇到了一个有点古怪的问题。本质上,我有一段代表文件路径的字符串。然后,我针对这些文件路径运行cat以在排序、重复数据删除等之前合并文件。这是代码部分(其中“applicableReductions”是字符串slice):applicableReductions:=[]string{}for_,fqFromListName:=rangefqFromListNames{filePath:=GetFilePath()//BROKECODEGOESHERE}applicableReductions=append(applicableReductions,filePath)fi

go - 仅在 slice 的第一个元素上保留 unsafe.Pointer 并且没有对该 slice 本身的引用是否安全?

packagemainimport("fmt""unsafe""runtime")funcgetPoi()unsafe.Pointer{vara=[]int{1,2,3}returnunsafe.Pointer(&a[0])}funcmain(){p:=getPoi()runtime.GC()fmt.Println("Hello,playground%v\n",*(*int)(unsafe.Pointer(uintptr(p)+8)))}输出:3https://play.golang.org/p/-OQl7KeL9a只是检查不安全指针的能力,尽量减少slice结构的内存开销(12字节)