草庐IT

test_slice

全部标签

go - 将数据库行读入 map 并附加到 map slice

我正在尝试使用map和这些map的slice来存储从数据库查询返回的行。但是我在rows.Next()和final的每次迭代中得到的是查询中同一行的slice。问题似乎与我存储cols的内存位置有关,但直到现在我都无法解决。我在这里错过了什么:源码如下:packagemainimport("database/sql"_"github.com/lib/pq""fmt""log""reflect")varmyMap=make(map[string]interface{})varmySlice=make([]map[string]interface{},0)funcmain(){fmt.Pr

go - 将数据库行读入 map 并附加到 map slice

我正在尝试使用map和这些map的slice来存储从数据库查询返回的行。但是我在rows.Next()和final的每次迭代中得到的是查询中同一行的slice。问题似乎与我存储cols的内存位置有关,但直到现在我都无法解决。我在这里错过了什么:源码如下:packagemainimport("database/sql"_"github.com/lib/pq""fmt""log""reflect")varmyMap=make(map[string]interface{})varmySlice=make([]map[string]interface{},0)funcmain(){fmt.Pr

go for range slice 和 goroutine 方法调用,背后的逻辑

代码如下:packagemainimport("fmt""time")typefieldstruct{namestring}func(p*field)print(){fmt.Println(p.name)}funcmain(){data:=[]field{{"one"},{"two"},{"three"}}for_,v:=rangedata{gov.print()}time.Sleep(3*time.Second)}我知道代码是错误的,因为for循环变量在for-range循环中被重用了。当goroutine有机会启动时,v的值可能已被修改。所以打印结果将是"three,three,t

go for range slice 和 goroutine 方法调用,背后的逻辑

代码如下:packagemainimport("fmt""time")typefieldstruct{namestring}func(p*field)print(){fmt.Println(p.name)}funcmain(){data:=[]field{{"one"},{"two"},{"three"}}for_,v:=rangedata{gov.print()}time.Sleep(3*time.Second)}我知道代码是错误的,因为for循环变量在for-range循环中被重用了。当goroutine有机会启动时,v的值可能已被修改。所以打印结果将是"three,three,t

pointers - 在将 `slice` 附加到之后指向 `slice` 元素的指针的行为

我想知道在附加slice之后指向slice元素的指针的行为是什么,例如:packagemainimport"fmt"funcmain(){my_slice:=[]int{3}silly_ptr:=&my_slice[0]//Doweknowthatsilly_ptrpointstovalueequal3//allthetime?(Ifwedon'texplicitlychangeit).fmt.Printf("%p\n",silly_ptr)fmt.Println(*silly_ptr)fori:=0;i产生:(没有惊喜)0xc20800a20030xc20805a0003我知道追加到

pointers - 在将 `slice` 附加到之后指向 `slice` 元素的指针的行为

我想知道在附加slice之后指向slice元素的指针的行为是什么,例如:packagemainimport"fmt"funcmain(){my_slice:=[]int{3}silly_ptr:=&my_slice[0]//Doweknowthatsilly_ptrpointstovalueequal3//allthetime?(Ifwedon'texplicitlychangeit).fmt.Printf("%p\n",silly_ptr)fmt.Println(*silly_ptr)fori:=0;i产生:(没有惊喜)0xc20800a20030xc20805a0003我知道追加到

Golang - 带有许多要 slice 或结构的分隔符的字符串

我从TCP连接返回以下字符串作为响应:220Connected.\ncommand:connect\nemail:ERROR_MAIL_MISSING\nstatus:CMD_ERROR\nend我实际上想将此响应转换为以下golang结构:typeMessagestruct{KeystringValuestring}typeResponsestruct{ConnectstringMessages[]Message}如果220Connected始终存在意味着:Response.Connect=>TRUE220Connected之间的所有响应。可以使用end访问:Response[0].

Golang - 带有许多要 slice 或结构的分隔符的字符串

我从TCP连接返回以下字符串作为响应:220Connected.\ncommand:connect\nemail:ERROR_MAIL_MISSING\nstatus:CMD_ERROR\nend我实际上想将此响应转换为以下golang结构:typeMessagestruct{KeystringValuestring}typeResponsestruct{ConnectstringMessages[]Message}如果220Connected始终存在意味着:Response.Connect=>TRUE220Connected之间的所有响应。可以使用end访问:Response[0].

unit-testing - Golang 单元测试中的 stub 方法

我整晚都在想这个问题,但仍然找不到一种优雅的方式来做这件事。假设我有一个结构typefilestruct{xint}func(f*file)filename()string{returnfmt.Sprintf("%s/%d.log",exportPath,f.x)}func(f*file)write(data[]byte){...aFile=os.File.Open(f.filename())...}现在我想测试write方法和stub文件名方法以返回临时文件名。我怎样才能做到这一点?目前我找到了两个选择:声明filename=func(f*file)并在测试中覆盖它使文件名成为结构的

unit-testing - Golang 单元测试中的 stub 方法

我整晚都在想这个问题,但仍然找不到一种优雅的方式来做这件事。假设我有一个结构typefilestruct{xint}func(f*file)filename()string{returnfmt.Sprintf("%s/%d.log",exportPath,f.x)}func(f*file)write(data[]byte){...aFile=os.File.Open(f.filename())...}现在我想测试write方法和stub文件名方法以返回临时文件名。我怎样才能做到这一点?目前我找到了两个选择:声明filename=func(f*file)并在测试中覆盖它使文件名成为结构的