小编Viv*_*ivi的帖子

如何在go测试中检查日志/输出?

我有这个功能,在某些情况下记录错误:

func readByte(/*...*/){
    // ...
    if err != nil {
        fmt.Println("ERROR")
        log.Print("Couldn't read first byte")
        return
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

现在,在测试文件中,我想检查此函数的输出错误:

    c.Assert(OUTPUT, check.Matches, "teste")
Run Code Online (Sandbox Code Playgroud)

我该如何访问日志?我试图放一个缓冲区,但它没有用.在不更改readByte函数代码的情况下捕获此日志的正确方法是什么?

testing go

10
推荐指数
2
解决办法
9901
查看次数

GO中如何检查切片是否在切片内部?

我有以下代码:

func main(){
    l1 := []string{"a", "b", "c"}
    l2 := []string {"a", "c"}
    //l2 in l1?
}
Run Code Online (Sandbox Code Playgroud)

我可以使用循环和标志来检查这一点,但是有没有一种简单的方法来检查 l2 是否在 l1 内部,就像 python 命令“l2 in l1”一样?

list go

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

如何在GO中的请求中获取身体响应?

我正在尝试创建一个像代理一样工作的网络服务器.我的服务器为客户端向特定站点发出请求(POST,GET ...),从该站点接收响应并将其提供给客户端.正如我所说,像代理.问题是:在google.com的响应中(例如任何其他网站),我无法阅读正文.状态代码是200,但当我试图阅读身体内容时,我收到了奇怪的事情.

这是我提出请求的代码的一部分

request, err := http.NewRequest(method, url, nil)
for k, v := range m {
    request.Header.Set(k, v)
}
if err != nil {
    log.Fatalln(err.Error())
}

client := http.Client{}
resp, err := client.Do(request)

if err != nil {
    log.Fatalln(err.Error())
}else{

fmt.Println("=======================")
fmt.Println(resp)
fmt.Println("=======================")
fmt.Println(resp.Body)
Run Code Online (Sandbox Code Playgroud)

我收到了这个:

=======================
&{200 OK 200 HTTP/1.1 1 1 map[Date:[Mon, 09 Jan 2017 18:07:49 GMT]
Cache-Control:[private, max-age=0] Content-Type:[text/html; 
charset=ISO-8859-1] P3p:[CP="This is not a P3P policy! See 
https://www.google.com/support/accounts/answer/151657?hl=en for more 
info."] Server:[gws] X-Xss-Protection:[1; mode=block] Expires:[-1] X-
Frame-Options:[SAMEORIGIN] Set-Cookie:[NID=94=i5qZWuqYtrLAkc-amGHbmDnqx3Wg8mGx0kuk6s- …
Run Code Online (Sandbox Code Playgroud)

webserver http response request go

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

如何从 go 中的 XML 元素获取文本(结构标签)?

以下 XML 是一个具有嵌套字段(标题、作者等)和文本(Blah Blah...)的元素示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <book category="cooking">
      <title lang="en">Everyday Italian</title>
      <author>Giada De Laurentiis</author>
      <year>2005</year>
      <price>30.00</price>
      Blah Blah Blah Bleh Blah
    </book>
Run Code Online (Sandbox Code Playgroud)

我已经编写了此结构来解码此 XML,但我不知道在这种情况下应该使用哪个结构标记。我在文档中搜索但一无所获。

    type Book struct{
       t string `xml:"book>title"`
       p string `xml:"book>price"`
       y string `xml:"book>year"`
       a string `xml:"book>author"`
       blah string ???????
    }
Run Code Online (Sandbox Code Playgroud)

xml go xml-parsing

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

创建一个流来读取GO中的一个巨大的字符串

我在变量和函数中有一个巨大的xml来解码这个xml.我不能使用unmarshal因为在某个问题上我需要读取一个元素并立即在db中添加它.

例:

db := mongo.Connect()

decoder := xml.NewDecoder(resp.Body)
defer resp.Body.Close()

for {
    token, _ := decoder.Token()
    if token == nil {
        break
    }

    switch se := token.(type) {
    case xml.StartElement:
    ...
}
Run Code Online (Sandbox Code Playgroud)

但现在我需要从字符串中读取.所以我没有resp.Body了,只是一个字符串.NewDecoder()函数接收一个io.Reader,所以我想我可以从流中读取.我怎样才能做到这一点??

xml go

-2
推荐指数
1
解决办法
43
查看次数

标签 统计

go ×5

xml ×2

http ×1

list ×1

request ×1

response ×1

testing ×1

webserver ×1

xml-parsing ×1