小编The*_*chu的帖子

如何测试恐慌?

我正在考虑如何编写测试来检查一段代码是否惊慌失措?我知道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恐慌,我们是否恢复,或者功能是否完全没有恐慌.如果没有恐慌,如何存在恐慌,如何指定要跳过哪些代码?我如何检查是否有一些恐慌从中恢复过来?

testing go

66
推荐指数
5
解决办法
2万
查看次数

JSON标准 - 浮点数

我想知道以下浮点表示法是否是有效的JSON表示法:

"result":{"base_fee":1e-005}
Run Code Online (Sandbox Code Playgroud)

或者指数符号应该用十进制表示法替换?

floating-point standards json exponent

42
推荐指数
3
解决办法
6万
查看次数

去模板示例

什么网站有一些关于使用Go html/templates的最新资源,特别是在解析html文件和处理列表方面?我遇到了Hoka Poka网站,但似乎已经过时了.

templates go

35
推荐指数
3
解决办法
6万
查看次数

地图 - 删除数据

如何从Go中的地图中删除数据?例如,拥有

m := map[string]string{ "key1":"val1", "key2":"val2" };
Run Code Online (Sandbox Code Playgroud)

我想让m放下"key1",而不是通过遍历其键来复制整个地图(在某些用途中可能会变得很大).是否足以将"nil"值分配给"key1",或者是否仍然将键保留在地图结构中且指定值为nil?也就是说,如果我稍后迭代地图的键,会出现"key1"吗?

dictionary go

32
推荐指数
1
解决办法
1万
查看次数

如何将Golang的日志输出设置回控制台?

Google Go的log软件包具有SetOutput - 一个用于将日志输出设置为任何io.Writer的函数.在我将其设置为测试之后,我想将输出恢复为标准控制台输出 - 我该怎么做?我没有看到任何明显的方法在包logio包中重置它.

console logging reset go output

31
推荐指数
1
解决办法
2万
查看次数

如何在golang中测试主包函数?

我想测试一下我的主程序包中包含的一些函数,但我的测试似乎无法访问这些函数.

我的示例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包中删除所有内容,除了一个简单的主函数来运行所有内容然后在自己的包中测试函数,还是有办法让我在测试期间从主文件中调用这些函数?

testing import unit-testing program-entry-point go

31
推荐指数
3
解决办法
3万
查看次数

如何使用Go附加两个[]字节切片或数组?

我最近尝试在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

我做错了什么,我应该如何添加两个字节数组呢?

arrays byte append go

27
推荐指数
2
解决办法
5万
查看次数

如何为Google App Engine Go开发设置IntelliJ IDEA?

我想使用IntelliJ IDEA IDE开发GAE Golang应用程序.我知道我需要下载程序和Golang插件,但除此之外,我迷失了.是否有关于如何为GAE Go开发配置IDEA的教程?

我在GOPATH/src/...文件夹中设置了我的项目,配置了App Engine SDK,我可以使用goapp从命令行运行我的项目.但是,我希望能够设置IDE进行语法检查,并能够从IDE运行和调试应用程序,而不是使用控制台.

ide installation google-app-engine intellij-idea go

25
推荐指数
1
解决办法
3438
查看次数

Google App Engine - IP地址列表?

我知道Google App Engine不支持具有静态IP地址的应用程序,但我想知道应用程序可能具有的列表或IP地址范围?我想将该列表用作其他地方部署的其他应用程序的IP地址白名单.

ip google-app-engine ip-address range whitelist

23
推荐指数
4
解决办法
2万
查看次数

GAE Golang - log.Print()?

哪里可以读取通过调用函数创建的日志:

log.Print("Message")
Run Code Online (Sandbox Code Playgroud)

Main下的"Logs"选项卡似乎只显示有关调用哪些URL的信息,但没有应用程序显示的任何调试信息.

logging google-app-engine go

20
推荐指数
2
解决办法
8025
查看次数