为了账号安全,请及时绑定邮箱和手机立即绑定

在golang中将结构转换为字节数据,反之亦然

在golang中将结构转换为字节数据,反之亦然

Go
qq_遁去的一_1 2021-08-23 16:30:35
我正在编写一个 Go 程序,其中我只是使用 -tr := &http.Transport{        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},    }client := &http.Client{Transport: tr}link := "address of server"resp, err := client.Get(link)现在我需要将 resp 转换为字节,以便我可以将其传递给某个函数,而另一方可以将其解码为相同的结构。resp 是 http 包中定义的 http.Response 类型的结构,我无法更改。我想直接将其转换为字节。golang 中是否有任何这样的函数可以直接使用,或者是否有任何方法可以做到这一点。
查看完整描述

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

你想使用go 库中的encode包。通常我喜欢 JSON 编码,因为它非常易读,但该包支持编码到/从许多格式,包括二进制和gob,这是一种专为您尝试做的事情而设计的格式。


go文档中编码为 json 的示例:


package main


import (

    "encoding/json"

    "fmt"

    "os"

)


func main() {

    type ColorGroup struct {

        ID     int

        Name   string

        Colors []string

    }

    group := ColorGroup{

        ID:     1,

        Name:   "Reds",

        Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},

    }

    b, err := json.Marshal(group)

    if err != nil {

        fmt.Println("error:", err)

    }

    os.Stdout.Write(b)

}

go文档中从 json 解码的示例:


package main


import (

    "encoding/json"

    "fmt"

)


func main() {

    var jsonBlob = []byte(`[

        {"Name": "Platypus", "Order": "Monotremata"},

        {"Name": "Quoll",    "Order": "Dasyuromorphia"}

    ]`)

    type Animal struct {

        Name  string

        Order string

    }

    var animals []Animal

    err := json.Unmarshal(jsonBlob, &animals)

    if err != nil {

        fmt.Println("error:", err)

    }

    fmt.Printf("%+v", animals)

}


查看完整回答
反对 回复 2021-08-23
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

http.Response 涉及太多,无法转换为字节然后恢复。但是对于简单的结构,您可以考虑使用专为以下目的设计的gob:

要通过网络传输数据结构或将其存储在文件中,必须对其进行编码,然后再次解码。


查看完整回答
反对 回复 2021-08-23
  • 3 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信