我正在考虑如何编写测试来检查一段代码是否惊慌失措?我知道Go recover
用来捕捉恐慌,但与Java代码不同,你不能真正指定在恐慌或你有什么时应跳过哪些代码.所以,如果我有一个功能:
func f(t *testing.T) {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in f", r)
}
}()
OtherFunctionThatPanics()
t.Errorf("The code did not panic")
}
Run Code Online (Sandbox Code Playgroud)
我无法确定是否OtherFunctionThatPanics
恐慌,我们是否恢复,或者功能是否完全没有恐慌.如果没有恐慌,如何存在恐慌,如何指定要跳过哪些代码?我如何检查是否有一些恐慌从中恢复过来?
我想知道以下浮点表示法是否是有效的JSON表示法:
"result":{"base_fee":1e-005}
Run Code Online (Sandbox Code Playgroud)
或者指数符号应该用十进制表示法替换?
什么网站有一些关于使用Go html/templates的最新资源,特别是在解析html文件和处理列表方面?我遇到了Hoka Poka网站,但似乎已经过时了.
如何从Go中的地图中删除数据?例如,拥有
m := map[string]string{ "key1":"val1", "key2":"val2" };
Run Code Online (Sandbox Code Playgroud)
我想让m放下"key1",而不是通过遍历其键来复制整个地图(在某些用途中可能会变得很大).是否足以将"nil"值分配给"key1",或者是否仍然将键保留在地图结构中且指定值为nil?也就是说,如果我稍后迭代地图的键,会出现"key1"吗?
Google Go的log
软件包具有SetOutput - 一个用于将日志输出设置为任何io.Writer的函数.在我将其设置为测试之后,我想将输出恢复为标准控制台输出 - 我该怎么做?我没有看到任何明显的方法在包log
或io
包中重置它.
我想测试一下我的主程序包中包含的一些函数,但我的测试似乎无法访问这些函数.
我的示例main.go文件如下所示:
package main
import (
"log"
)
func main() {
log.Printf(foo())
}
func foo() string {
return "Foo"
}
Run Code Online (Sandbox Code Playgroud)
和我的main_test.go文件看起来像:
package main
import (
"testing"
)
func Foo(t testing.T) {
t.Error(foo())
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时,go test main_test.go
我得到了
# command-line-arguments
.\main_test.go:8: undefined: foo
FAIL command-line-arguments [build failed]
Run Code Online (Sandbox Code Playgroud)
据我所知,即使我将测试文件移到别处并尝试从main.go文件导入,我也无法导入它,因为它是package main
.
构建此类测试的正确方法是什么?我应该从main
包中删除所有内容,除了一个简单的主函数来运行所有内容然后在自己的包中测试函数,还是有办法让我在测试期间从主文件中调用这些函数?
我最近尝试在Go中附加两个字节的数组切片,并遇到了一些奇怪的错误.我的代码是:
one:=make([]byte, 2)
two:=make([]byte, 2)
one[0]=0x00
one[1]=0x01
two[0]=0x02
two[1]=0x03
log.Printf("%X", append(one[:], two[:]))
three:=[]byte{0, 1}
four:=[]byte{2, 3}
five:=append(three, four)
Run Code Online (Sandbox Code Playgroud)
错误是:
cannot use four (type []uint8) as type uint8 in append
cannot use two[:] (type []uint8) as type uint8 in append
Run Code Online (Sandbox Code Playgroud)
考虑到Go的切片所谓的稳健性应该不是问题:
http://code.google.com/p/go-wiki/wiki/SliceTricks
我做错了什么,我应该如何添加两个字节数组呢?
我想使用IntelliJ IDEA IDE开发GAE Golang应用程序.我知道我需要下载程序和Golang插件,但除此之外,我迷失了.是否有关于如何为GAE Go开发配置IDEA的教程?
我在GOPATH/src/...文件夹中设置了我的项目,配置了App Engine SDK,我可以使用goapp从命令行运行我的项目.但是,我希望能够设置IDE进行语法检查,并能够从IDE运行和调试应用程序,而不是使用控制台.
我知道Google App Engine不支持具有静态IP地址的应用程序,但我想知道应用程序可能具有的列表或IP地址范围?我想将该列表用作其他地方部署的其他应用程序的IP地址白名单.
哪里可以读取通过调用函数创建的日志:
log.Print("Message")
Run Code Online (Sandbox Code Playgroud)
Main下的"Logs"选项卡似乎只显示有关调用哪些URL的信息,但没有应用程序显示的任何调试信息.