草庐IT

test_slice

全部标签

go - 为什么 slice 长度大于容量会导致运行时错误?

制作容量小于长度的slicepackagemainimportfmt"fmt"funcmain(){typeb[]intvark=make([]b,10,5)fmt.Printf("%d\n",k[8])}尝试运行时出现以下错误。panic:runtimeerror:makeslice:capoutofrangeruntime.panic+0x9e/go/src/pkg/runtime/proc.c:1060runtime.panic(0x453b00,0x30020390)runtime.panicstring+0x94/go/src/pkg/runtime/runtime.c:11

unit-testing - Golang - 使用文件系统进行测试并达到 100%

我正在尝试测试我的一个包裹以达到100%。但是,我找不到如何在不“反对系统”(函数指针等)的情况下做到这一点。我尝试做类似的事情,但由于“真实”功能,我无法达到100%:varfsfileSystem=osFS{}typefileSysteminterface{Open(namestring)(file,error)Stat(namestring)(os.FileInfo,error)}typefileinterface{io.Closerio.Readerio.ReaderAtio.SeekerStat()(os.FileInfo,error)}//osFSimplementsfil

unit-testing - Golang - 使用文件系统进行测试并达到 100%

我正在尝试测试我的一个包裹以达到100%。但是,我找不到如何在不“反对系统”(函数指针等)的情况下做到这一点。我尝试做类似的事情,但由于“真实”功能,我无法达到100%:varfsfileSystem=osFS{}typefileSysteminterface{Open(namestring)(file,error)Stat(namestring)(os.FileInfo,error)}typefileinterface{io.Closerio.Readerio.ReaderAtio.SeekerStat()(os.FileInfo,error)}//osFSimplementsfil

戈朗 : Testing with init() func

大家好,我是Go的新手,我正在编写一个简单的应用程序,它从env变量中获取一些配置。我在init函数中执行此操作,如下所示。typeenvVarsstruct{Hoststring`env:"APP_HOST"`Usernamestring`env:"APP_USERNAME"`Passwordstring`env:"APP_PASSWORD"`}varenvConfigenvVarsfuncinit(){iferr:=env.Parse(&envConfig);err!=nil{log.Fatal(err)}}我写了测试来验证环境变量是否被正确读取。但问题是我的程序的initfunc

戈朗 : Testing with init() func

大家好,我是Go的新手,我正在编写一个简单的应用程序,它从env变量中获取一些配置。我在init函数中执行此操作,如下所示。typeenvVarsstruct{Hoststring`env:"APP_HOST"`Usernamestring`env:"APP_USERNAME"`Passwordstring`env:"APP_PASSWORD"`}varenvConfigenvVarsfuncinit(){iferr:=env.Parse(&envConfig);err!=nil{log.Fatal(err)}}我写了测试来验证环境变量是否被正确读取。但问题是我的程序的initfunc

garbage-collection - 零长度和零上限 slice 是否仍然指向底层数组并防止垃圾收集?

让我们假设以下场景:a:=make([]int,10000)a=a[len(a):]正如我们从“GoSlices:UsageandInternals”中了解到的那样,在下slice中存在一个“可能的问题”。对于任何slicea如果你执行a[start:end]它仍然指向原始内存,所以如果你不复制,一个小的下slice可能会保留一个非常大的数组在内存中保存了很长时间。但是,选择这种情况会导致slice不仅应该具有零长度,而且应该具有零容量。对于构造a=a[0:0:0]可以提出类似的问题。当前的实现是否仍然维护一个指向底层内存的指针,以防止它被垃圾收集,或者它是否认识到没有len或cap的

garbage-collection - 零长度和零上限 slice 是否仍然指向底层数组并防止垃圾收集?

让我们假设以下场景:a:=make([]int,10000)a=a[len(a):]正如我们从“GoSlices:UsageandInternals”中了解到的那样,在下slice中存在一个“可能的问题”。对于任何slicea如果你执行a[start:end]它仍然指向原始内存,所以如果你不复制,一个小的下slice可能会保留一个非常大的数组在内存中保存了很长时间。但是,选择这种情况会导致slice不仅应该具有零长度,而且应该具有零容量。对于构造a=a[0:0:0]可以提出类似的问题。当前的实现是否仍然维护一个指向底层内存的指针,以防止它被垃圾收集,或者它是否认识到没有len或cap的

reflection - 戈朗 : how to use interface{} type to insert a value into the middle of a slice?

我很难理解interface{}类型在Go中的用法。在这个例子中,我有一个函数可以将一个值插入到slice中间的某处。它看起来像这样:typemystruct{a,b,cint}funcinsert(ar[]mystruct,valmystruct,iint)[]mystruct{l:=len(ar)ifl==cap(ar){tmp:=make([]mystruct,l+1,(l*2)+1)copy(tmp,ar[0:i])copy(tmp[i+1:],ar[i:])ar=tmp}else{ar=ar[0:l+1]copy(ar[i+1:],ar[i:])}ar[i]=valretur

reflection - 戈朗 : how to use interface{} type to insert a value into the middle of a slice?

我很难理解interface{}类型在Go中的用法。在这个例子中,我有一个函数可以将一个值插入到slice中间的某处。它看起来像这样:typemystruct{a,b,cint}funcinsert(ar[]mystruct,valmystruct,iint)[]mystruct{l:=len(ar)ifl==cap(ar){tmp:=make([]mystruct,l+1,(l*2)+1)copy(tmp,ar[0:i])copy(tmp[i+1:],ar[i:])ar=tmp}else{ar=ar[0:l+1]copy(ar[i+1:],ar[i:])}ar[i]=valretur

testing - 如何为基于 net/http 的代码编写集成测试?

这是一个示例代码:packagemainimport("net/http")funcHome(whttp.ResponseWriter,r*http.Request){w.Write([]byte("Hello,world!"))}funcRouter()*http.ServeMux{mux:=http.NewServeMux()mux.HandleFunc("/",Home)returnmux}funcmain(){mux:=Router()http.ListenAndServe(":8080",mux)}这是我写的测试用例:packagemainimport("net/http""