草庐IT

test_slice

全部标签

go - 将数组或 slice 传递给 golang 中的变量 args 函数

这个问题在这里已经有了答案:HowcanIpassasliceasavariadicinput?(3个答案)关闭7年前。filepath.Join方法接受一个...string参数,但我有一个[]string我想传入。当我尝试这样做时,我得到以下错误:cannotuseappend(elems,spadePath)(type[]string)astypestringinargumenttofilepath.Join有没有办法在[]type和...type之间进行转换?

c - 如何将 slice 发送到 Go 中的函数?

我正在用Go重写一些C代码。在我的C代码中,我有这样的东西:staticvoidsharedb(unsignedchar*sharedkey,unsignedchar*send,constunsignedchar*received){unsignedcharkrq[96];unsignedcharbuf[64];//restremovedforbrevityindcpa_enc(send,buf,received,krq+32);}indcpa_enc函数定义如下:staticvoidindcpa_enc(unsignedchar*c,constunsignedchar*m,const

go - 在每次循环迭代中重新声明 slice 是不好的做法吗?

举个例子:for{myData:=我可以将buf:=new(...放在for循环之上以节省处理器和一些内存,但这会导致任何问题吗?我看到的例子有new在循环中。编辑:对于上述情况,编码器可以超越for循环,那么为什么不呢(在我见过的例子中)? 最佳答案 我希望重用缓冲区:buf:=new(bytes.Buffer)for{buf.Reset()//...} 关于go-在每次循环迭代中重新声明slice是不好的做法吗?,我们在StackOverflow上找到一个类似的问题:

go - slice 的有效分配(上限与长度)

假设我正在创建一个slice,我事先知道我想通过连续调用append通过for循环填充1e5元素://Append1e5stringstotheslicefori:=0;i哪个是初始化slice的更有效方法以及原因:一个。声明一个零字符串片段?varmyslice[]string提前将其长度设置为1e5?myslice=make([]string,1e5)将其长度和容量都设置为1e5?myslice=make([]string,1e5,1e5) 最佳答案 您的b和c解决方案是相同的:使用make()创建slice在您未指定容量的情况

go - 如何在golang中创建一个不固定长度的 slice

有什么方法可以在go中创建一个不固定长度slice吗?例如,我想抓取目录中的所有文件名(content/)填充到[]stringslice中。content/目录包含:$->treecontent/content/├──1.txt├──2.txt└──tmp这是我目前得到的:packagemainimport("fmt""io/ioutil")funclistFile()[]string{list:=make([]string,100)//asyoucansee,Imakeaslicelengthas100,butthatisnotappropriate.files,_:=ioutil

testing - 如何仅在测试时允许一个包访问另一个包的未导出数据?

在TheGoProgrammingLanguage的11.2.4节中,有一个外部测试通过声明访问fmt.isSpace()的示例fmt的export_test.go文件中的IsSpace。这似乎是完美的解决方案,所以这就是我所做的:a/a.go:packageavarxintfuncSet(vint){x=v}a/a_test.go:packageaimport"testing"funcTestSet(t*testing.T){Set(42)ifx!=42{t.Errorf("x==%d(expected42)",x)}}funcGet()int{returnx}(在a/中运行gote

arrays - 如何将 int 添加到 slice

我是Go的新手,因此我的问题可能看起来有点天真。我有一个我使用创建的slicevarx[]int;fori:=2;i我想在这个slice前添加一个整数,比如x=append(2,x)但显然它不会工作,因为append需要一个slice作为第一个参数。我试过了this但它只适用于字符串,对我来说不起作用。 最佳答案 使用slicecompositeliteral:[]int{1},例如:packagemainimport("fmt")funcmain(){varx[]intfori:=2;iPlayground:https://pla

testing - 如何记录测试时间

我写了两个函数,现在我很想知道哪个更快。我怎样才能找出哪个更快?如何通过测试找出哪个更快?是否为此提供一个计时器? 最佳答案 更好的是,Go提供了内置的基准测试和测试功能!创建一个名为something_test.go的文件(必须有_test部分)。funcBenchmarkFunc1(b*testing.B){fori:=0;i然后只需运行:gotest-bench=。-benchmem它将打印每个函数花费的时间和内存使用/分配。引用:http://golang.org/pkg/testing/http://dave.cheney

testing - golang TestMain() 函数设置测试无法访问的变量

我有以下TestMain函数:funcTestMain(m*testing.M){db:="[working_db_connection]"dbInstance,_:=InitializeRepo(db,2)runTests:=m.Run()os.Exit(runTests)}和下面的示例测试funcTestSomeFeature(t*testing.T){fmt.Println(dbInstance)}函数TestSomeFeature确实运行,但表示dbInstance未定义。为什么这不能访问变量?从示例中,我看到使用此语法访问TestMain中的变量et。

go - slice 迭代顺序

好吧,我认为这可能是一个老问题,但我没有在stackoverflow上找到任何东西。在go中,不保证map上的迭代顺序是可重现的。因此,建议的方法是将键保存在一个slice中并对该slice进行排序。然后遍历该slice以从映射中检索值,以便我们按顺序获取它们(由于由键组成的slice已排序,因此将以可重现的顺序排列)。所以这意味着需要对slice进行排序,否则slice上的迭代也不会给出可重现的顺序。但是当我在Playground上尝试下面的代码时,我总是发现迭代中维护的顺序,那么在map迭代的情况下,为什么需要对键的slice进行排序?funcmain(){varmySlice=m