使用ioutil进行Go输出:从http调用返回(ASCII?)数字数组

huangapple go评论92阅读模式
英文:

Go output with ioutil: returning array of (ASCII?) numbers from http call

问题

我正在尝试使用Go编写一个Web客户端,但是当我检查HTTP请求的返回值时,我得到的是一个数字数组,而不是文本。

以下是产生输出的程序的最简化版本。我认为我在使用ioutil时出了问题,但不知道具体是什么问题。

package main

import "fmt"
import "net/http"
import "io/ioutil"

func main() {
    resp, err := http.Get("http://test.com/")
    if err != nil {
        fmt.Println(err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    fmt.Print(body)
}

输出结果看起来像是:

[239 187 191 60 33 68 79 67 84 89 80 69 32 104 116 109 108 ...

而不是test.com返回的内容。

英文:

I am trying to write a web client in Go, but when I check the return value of the body of the http request, I get an array of numbers, instead of text.

This is the most isolated version of the program that produces the output. I think I am failing do something with ioutil, but do not know what.

package main

import "fmt"
import "net/http"
import "io/ioutil"

func main() {
    resp, err := http.Get("http://test.com/")
    if err != nil {
	    fmt.Println(err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    fmt.Print(body)
}

The output comes out looking like:

[239 187 191 60 33 68 79 67 84 89 80 69 32 104 116 109 108 ...

instead of the test returned by test.com

答案1

得分: 6

ioutil.ReadAll() 返回的是一个字节切片 ([]byte),而不是一个字符串 (string)(还有一个错误)。

将其转换为字符串,你就可以使用了:

fmt.Print(string(body))

看下这个简单的例子(在 Go Playground 上试一试):

var b []byte = []byte("Hello")

fmt.Println(b)
fmt.Println(string(b))

输出:

[72 101 108 108 111]
Hello
英文:

ioutil.ReadAll() returns a byte slice ([]byte) and not a string (plus an error).

Convert it to string and you're good to go:

fmt.Print(string(body))

See this simple example (try it on Go Playground):

var b []byte = []byte("Hello")

fmt.Println(b)
fmt.Println(string(b))

Output:

[72 101 108 108 111]
Hello

huangapple
  • 本文由 发表于 2015年2月5日 19:44:58
  • 转载请务必保留本文链接:https://go.coder-hub.com/28343085.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定