2021-11-09 来源:华纳网 责任编辑:韩玉玲 人气:
核心提示:struct与[]byte互转

知识点:

struct与[]byte互转

 


 

本课内容:

大家好,欢迎来到谷雨课堂,

以下是本节用到的代码:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
package main
import (  "bytes"  "encoding/gob"  "fmt")

type complexData struct {  N int  S string  M map[string]int  P []byte  C *complexData  E Addr}

type Addr struct {  Comment string}

func main() {

  testStruct := complexData{    N: 23,    S: "我是字符串",    M: map[string]int{"one": 1, "two": 2, "three": 3},    P: []byte("我是byte"),    C: &complexData{      N: 256,      S: "有故事的人!",      M: map[string]int{"01": 1, "10": 2, "11": 3},      E: Addr{        Comment: "内容正文",      },    },    E: Addr{      Comment: "Test123123123",    },  }

  fmt.Println("Outer struct: ", testStruct)  fmt.Println("Inner struct: ", testStruct.C)  fmt.Println("Inner struct: ", testStruct.E)  fmt.Println("===========================")

  var b bytes.Buffer  enc := gob.NewEncoder(&b)  err := enc.Encode(testStruct)  if err != nil {    fmt.Println(err)  }

  dec := gob.NewDecoder(&b)  var data complexData  err = dec.Decode(&data)  if err != nil {    fmt.Println("Error decoding GOB data:", err)    return  }

  fmt.Println("Outer struct: ", data)  fmt.Println("Inner struct: ", data.C)  fmt.Println("Inner struct: ", testStruct.E)

}

 

扩展阅读:

关于序列化:二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。

 

 

完整的源代码可以登录【华纳网】下载。

https://www.worldwarner.com




 





免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。