草庐IT

bit_generator

全部标签

unit-testing - 戈朗 : how to generate a net/http timeout Error to perform unit test

我得到了一段如下代码:iftimeoutErr,ok:=err.(net.Error);ok&&timeoutErr.Timeout(){//Somecodethatneedtotest}我怎样才能生成可以匹配此处条件的错误,以便代码通过if。 最佳答案 Error是一个接口(interface):typeErrorinterface{errorTimeout()bool//Istheerroratimeout?Temporary()bool//Istheerrortemporary?}要实现它,您需要执行以下操作(未经测试):ty

戈朗 : range through slice and generate HTML table

我有一个字符串slice,我想遍历slice并创建一个包含值的简单HTML表格。这是一些示例代码来说明:vartmpl=`%s`names:=[]string{"john","jim"}for_,v:=rangenames{fmt.Printf(tmpl,v)}这会产生:johnjim我想获取返回的内容并创建一个HTML表格,或者至少能够将它传递给另一个具有表格结构的HTML模板。知道如何做到这一点吗? 最佳答案 下面是创建表格的一种方法:vartmpl=`%s`fmt.Printf("")names:=[]string{"john

go - 使用 go 引用当前文件 :generate

go:generate有没有办法引用当前文件?例如,我想做类似的事情//go:generatesometool$FILE谢谢 最佳答案 您可以按如下方式引用当前文件://go:generatesometool$GOFILE$GOFILE被扩展为gogenerate处理的文件的名称。 关于go-使用go引用当前文件:generate,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4

go - 是否可以在设计用于 go generate 的模板上使用 gofmt?

我正在使用go:generate处理自动生成一些数据库模型,我希望通过gofmt运行我的go模板,但它被所有额外的{{...}}动态部分。我是否遗漏了一些明显的东西?我希望这是gofmt人员解决的用例,因为gofmt和gogenerate都是go工具链的重要部分。显然,在gogenerate之后运行gofmt是可行的,但是让99%都是go代码的格式不佳的模板感觉很脏。 最佳答案 大多数生成工具将模板执行到*bytes.Buffer,使用format.Source格式化缓冲区字节并将结果写入输出文件。给定模板t和输出编写器w,代码如下

postgresql - generate_series 的 Postgres 查询中的占位符返回未知

我尝试使用这样的占位符进行查询database.Query("selectlogin,displaynamefrom(selectdistinct$1+trunc(random()*$2)::integerasidfromgenerate_series($3,$4)g)rjoinusersusing(id)limit10",min_id,max_id-min_id,min_id,max_id)它抛出一个错误:pq:functiongenerate_series(unknown,unknown)isnotunique然后我找到了将查询格式化为字符串的解决方案query:=fmt.Spri

xml - 戈朗 : structure to generate/parse both XML and JSON

用例是生成(和解析)以下XML和JSON,而不是为它们中的每一个创建单独的结构。XMLHelloSomething1Something2...JSON{"data":"Hello","data_type":"plaintext","field1":"Something1","field2":"Something2"...}可能的解决方案将是:typeXxxstruct{XMLNamexml.Name`xml:"http://example.org/nsxxx"json:"-"`//**Ifonly"inline"attributehadexisted**DataData`xml:"da

go - Go 中的 math.bits 是否使用机器代码指令?

新的golang包“math/bits”提供了有用的功能。源代码显示了如何计算函数结果。当可用时,这些功能是否被相应的处理器OP代码取代? 最佳答案 是的,如Go1.9ReleaseNotes:Newbitmanipulationpackage:中所述Go1.9includesanewpackage,math/bits,withoptimizedimplementationsformanipulatingbits.Onmostarchitectures,functionsinthispackageareadditionallyrec

string - 戈朗 : bitwise operation on very long binary bit string representation

作为练习,在输入中我得到了2个非常大的string,其中包含长二进制表示,这里是短字符串,但可能超过100位:例子1110000011按位或输出(作为字符串)11111我的方法是解析每个字符串字符并进行按位OR并构建一个新字符串,但是处理大条目时它太长而且效果不佳。然后ParseInt方法被限制为64位长度num1,err:=strconv.ParseInt("11100",2,64)num2,err:=strconv.ParseInt("00011",2,64)res:=num1|num2如何处理2个字符串二进制表示之间的按位或? 最佳答案

戈朗 : Read buffered input as signed 16bit ints

我正在尝试读取带符号的16位整数(wav格式)的缓冲流,但bufio.Read方法只接受一个字节数组。我的问题是2部分:我可以将字节流预格式化为缓冲的int16数组吗?如果不能,将字节数组后处理为int16数组的最佳方法是什么?我最初的想法是使用tmp数组并继续推送/处理它们,但我很好奇是否有更惯用的方法来做到这一点?packagemainimport("bufio""io""log""os/exec")funcmain(){app:="someapp"cmd:=exec.Command(app)stdout,err:=cmd.StdoutPipe()r:=bufio.NewReade

戈朗 : Number of bits of an IP mask

在Go中,我如何像这样获取IP掩码的位数:10.100.20.0255.255.255.0=>24bitsmaks。检查掩码是否低于或大于特定位数(例如,是否要阻止所有大于/24的地址)会很有帮助。 最佳答案 net包具有获取掩码前缀大小的函数,即CIDRnotation中使用的值.这些位的具体作用是:func(mIPMask)Size()(ones,bitsint)要获取位,请参见以下示例:packagemainimport("fmt""net")funcmain(){mask:=net.IPMask(net.ParseIP("2