首頁 > 後端開發 > Golang > struct轉換byte golang

struct轉換byte golang

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2023-05-14 21:51:38
原創
1576 人瀏覽過

在Go語言中,結構體(struct)是一種非常常見的類型,它由多個欄位組成。在某些情況下,我們需要將結構體轉換為位元組數組,或將位元組數組轉換為結構體。這時候,我們可以使用Go語言中提供的一些函數來進行轉換。

  1. 將結構體轉換為位元組數組

要將結構體轉換為位元組數組,我們可以使用以下方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

package main

 

import (

    "bytes"

    "encoding/binary"

    "fmt"

)

 

type User struct {

    Name string

    Age  int

}

 

func main() {

    user := User{Name: "张三", Age: 18}

    buf := new(bytes.Buffer)

    err := binary.Write(buf, binary.BigEndian, user)

    if err != nil {

        fmt.Println("write error:", err)

        return

    }

    fmt.Println(buf.Bytes()) // [0 0 0 6 232 173 153 229 156 168 0 18]

}

登入後複製

在在上述程式碼中,我們使用了binary.Write函數將結構體User轉換為位元組數組,其中buf變數為寫入的緩衝區。

  1. 將位元組陣列轉換為結構體

要將位元組陣列轉換為結構體,我們可以使用以下方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

package main

 

import (

    "bytes"

    "encoding/binary"

    "fmt"

)

 

type User struct {

    Name string

    Age  int

}

 

func main() {

    data := []byte{0, 0, 0, 6, 232, 173, 153, 229, 156, 168, 0, 18}

    user := User{}

    buf := bytes.NewReader(data)

    err := binary.Read(buf, binary.BigEndian, &user)

    if err != nil {

        fmt.Println("read error:", err)

        return

    }

    fmt.Println(user) // {张三 18}

}

登入後複製

在在上述程式碼中,我們使用了binary.Read函數將位元組陣列轉換為結構體User,其中buf變數為讀取的緩衝區。

總結

在Go語言中,透過使用encoding/binary套件中的函數,我們可以方便地將結構體轉換為位元組數組,或將字節數組轉換為結構體。這種轉換在網路程式設計或與其他程式語言互動時非常有用,可以讓我們更有效率地處理結構化資料。

以上是struct轉換byte golang的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板