草庐IT

render函数

全部标签

function - Golang 函数测试

我正在使用第三方库,它是一些C函数的包装器。不幸的是,几乎所有的Go函数都是免费的(它们没有接收器,它们不是方法);不是我会采用的设计方法,但它就是我所拥有的。仅使用Go的标准“测试”库:是否有一种解决方案允许我创建可以模拟函数的测试?或者是将库包装成结构和接口(interface),然后模拟接口(interface)来实现我的目标的解决方案?我创建了一个蒙特卡洛模拟,它也处理生成的数据集。我的一种评估算法会寻找特定模型,然后将其传递给第三方函数进行评估。我知道我的边缘情况并且知道调用计数应该是多少,这就是我想要测试的。也许只需要一个简单的计数器?我发现使用这个库的其他项目没有完全覆盖

arrays - 从重复范围创建函数

我有一些这样的结构:typeDatacenterstruct{NamestringKeystringHosts[]Host}typeHoststruct{NamestringPortint}填充这些结构后,它们看起来像这样:[]config.Datacenter(len=2){Datacenter{Name:"dc1",Key:"string",Hosts:[]config.Host(len=1){Host{Name:"dc1-server-1",Port:8200(int)}}},Datacenter{Name:"dc2",Key:"Anotherstring",Hosts:[]co

asynchronous - 多个函数的数据处理是异步的

我有通过http接收的数据,这些数据需要由两个不同的函数处理。重要的是它们由每个函数按顺序处理。在文件中,例如:1,2,3,4,5。而数据库也记录了1,2,3,4,5。作为fifo模型。现在我有这样一个问题......我的数据一直在运行,有时数据库可以满足我更新数据的要求很长时间,因此我无法及时更新文件。在可能的情况下将数据添加到文件或数据库对我来说很重要。我可以使用缓冲channel,但我不知道队列中有多少数据可以等待处理,我不想表明缓冲区的大小肯定很大。我尝试向NewData函数添​​加更多goroutine,但在那种情况下,我的数据不是按顺序写入的。此代码显示了问题。packag

go - Viper,无法获取函数外初始化的值

我在使用viper时遇到问题,我已经通过viper方法分配了变量,所以当我尝试在任何函数中获取值时,我得到的是空值。有谁知道为什么会这样?任何其他变量初始化工作正常,但viperGetString方法不行。结构:主.gopackagemainimport("project/Model""github.com/spf13/viper"...)funcmain(){//Confighandlingviper.SetConfigName("main")viper.AddConfigPath("/config/")err=viper.ReadInConfig()...}封装模型packageM

c - 如何从 Go 函数返回 C 指针?

我有疑问是否可以从C上的Go函数指针返回?例如main.c可以是:structopen_db_returndb_ptr=open_db(db_path);GoSlicebacket={"DB",2,2};GoSlicekey={"CONFIG",6,6};structget_value_returnval=get_value(db_ptr.r0,backet,key);close_db(db_ptr.r0);接下来是Go代码://exportopen_dbfuncopen_db(pathstring)(interface{},error){db,err:=db.Open(path,06

go - go 函数的包选择错误

我正在从一本书中学习,这本书说要添加几行代码,但会引发错误packagemainimport("./lissajous""log""net/http")funcmain(){handler:=func(whttp.ResponseWriter,r*http.Request){lissajous(w)}http.HandleFunc("/",handler)//eachrequestcallshandlerlog.Fatal(http.ListenAndServe("localhost:8000",nil))}它抛出这个错误./server.go:6:importedandnotused

go - Golang扫描函数中 "ERROR: IOError: closed stream"如何处理?

我在Golang代码中使用knifebootstrap命令来引导节点。有时食谱中有等待,等待超过10分钟。在这种情况下,我收到错误“错误:IOStream关​​闭”。有什么办法可以增加时间限制吗?我也在不断地从cmd的输出和错误流中读取日志。funcexecuteCMDWorkstation(cmd*exec.Cmd,projectId,cr_idstring)bool{stdout,err3:=cmd.StdoutPipe()iferr3!=nil{utils.Info.Println(err3)returnfalse}deferstdout.Close()stderr,err4:=

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 最佳答案