草庐IT

pselect函数

全部标签

go - 传递任意结构作为函数参数

我正在处理二进制文件。我需要一个函数,它采用任意结构并返回这些结构的数组。我该怎么做?下面是我要完成的一个简单示例。目前,我对每个结构都有一个功能。唯一的区别在于:dataBuf,err:=make([]arbitrary_struct_type,numRecs)typestructAstruct{idint32sDatefloat64namestring}typestructBstruct{areaint32polygonstring}typestructCstruct{sTimefloat64eTimefloat64tSliceint32kmlstring}funcreadData

unit-testing - 为从中读取的函数填充 os.Stdin

如何在我的测试中填充os.Stdin以获取使用扫描仪从中读取的函数?我使用以下函数通过扫描器请求用户命令行输入:funcuserInput()error{scanner:=bufio.NewScanner(os.Stdin)println("Whatisyourname?")scanner.Scan()username=scanner.Text()/*...*/}现在如何测试这种情况并模拟用户输入?以下示例不起作用。标准输入仍然是空的。funcTestUserInput(t*testing.T){varfile*os.Filefile.Write([]byte("Tom"))os.St

recursion - 在 Go 中拥有带递归的 len 函数

我正在尝试构建简单的函数来计算slice中的元素(如len)它必须简单(没有额外的库)并且具有递归。问题是当我尝试检查slice是否为空(为nul)时。packagemainimport"fmt"funcmain(){x:=[]int{1,2,3}fmt.Println(len2(x))}funclen2(s[]int)int{ifs==nil{return0}return1+len2(s[1:])}本例中的结果应该是“3”。如果s==nil就坏了:panic:runtimeerror:sliceboundsoutofrange 最佳答案

testing - 测试 Go 中未导出函数的命名约定

我无法追溯我是从哪里知道的,但通常情况下,如果有人为方法Foo编写测试,则相应的测试名为TestFoo。如果测试一个未导出的函数,比如foo,那么测试的名称应该是什么?我的问题来自这样一个事实,当要求为未导出的函数生成测试时,JetBrainsIDEforGo会生成类似Test_foo的内容。这种行为可能是有道理的,因为如果你有Foo并且它是未导出的counterpatfoo在同一个包中,你会想以某种方式对它们进行不同的测试(在至少对于IDE中的跳转测试功能而言)。那么在未导出的函数之后命名测试有什么约定吗?顺便说一句:Go的文档testing包说,如果是,则执行测试:anyfunct

go - 将变量从中间件传递到结束函数

我正在使用中间件(CheckToken)来检查JWT并获取自定义声明(Id)(它将是我数据库中用户的ID)但是我需要将它传递给campaign.Attack(这样我就可以知道谁是进行“攻击”的用户),但我无法找到一种方法来做到这一点。我试图将它作为参数传递给token.go中的next(w,req,claim.id)但我需要触摸http.HandlerFunc函数,所以这不是一个有效的选项。关于如何将claim.id从CheckToken传递到campaign.Attack()有什么想法吗?谢谢*****main.go*****funcmain(){router:=mux.NewRou

http - 将 Reader 返回给 http.Response 的函数

这是我想用于特定页面网络爬虫的代码的精简版。这个想法是有一个获取URL的函数,处理HTTP并将Reader返回到响应主体http.Response:packagemainimport("io""log""net/http""os")funcmain(){consturl="https://xkcd.com/"r,err:=getPageContent(url)iferr!=nil{log.Fatal(err)}f,err:=os.Create("out.html")iferr!=nil{log.Fatal(err)}deferf.Close()io.Copy(f,r)}funcgetP

go - undefined reference to error 仅针对某些函数

我有一个库和一个为它构建的C接口(interface)。我的程序使用versionString()编译得很好,但使用loadConfig()就不行。这怎么可能?walker.h:#ifndefWFE_C_H#defineWFE_C_H#ifdef__cplusplusextern"C"{#endifconstchar*versionString();void*loadConfig(constchar*filePath,char*errorMessageBuffer,intbufferLen);#ifdef__cplusplus}#endif#endif工作版本:packagemain/

go - 测试在后台线程中运行的函数的结果

我有一个WebSocket服务器,我正在尝试正确测试它的一些功能。我有以下场景:我正在接受WebSocket连接并调用一个channelregisterConn在新连接上通知typehubstruct.这是中心:typehubstruct{clientsmap[client]boolregisterConnchanclient//someotherfieldsbelow...}//Thisfunctionrunsinitsownthreadforeverfunc(h*hub)run(){for{select{//Aclientconnectsonthischannelcaseclien

string - 调用带有特殊前缀/后缀的函数

我有一个名为“seeder”的包:packageseederimport"fmt"funcMyFunc1(){fmt.Println("IamMasood")}funcMyFunc2(){fmt.Println("Iamaprogrammer")}funcMyFunc3(){fmt.Println("Iwanttobuyacar")}现在我想调用所有带有MyFunc前缀的函数packagemainimport"./seeder"funcmain(){fork:=1;k我想要这样的东西:fork:=1;k和这个输出:IamMasoodIamaprogrammerIwanttobuyaca

在 go 中使用 channel 返回值测试发射器函数

我很难对我的发射器函数进行测试,该函数通过数据管道的channel传递结果。此功能将定期触发并从数据库中提取记录。我为这个问题编译了一个精简的完成版本,真正的代码会更复杂,但会遵循相同的模式。为了进行测试,我模拟了对数据库的访问,因为我想测试Emitter函数的行为。我想代码不仅仅是文字:这是我要测试的方法://EmittRecordpullrecordfromdatabasefuncEmittRecord(svcService,countint)我有几个带有接口(interface)的类型://RecordisaRecordfromdbtypeRecordstruct{Field1s