在Go語言中,結構體(struct)是一種非常常見的類型,它由多個欄位組成。在某些情況下,我們需要將結構體轉換為位元組數組,或將位元組數組轉換為結構體。這時候,我們可以使用Go語言中提供的一些函數來進行轉換。
- 將結構體轉換為位元組數組
要將結構體轉換為位元組數組,我們可以使用以下方法:
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())
}
|
登入後複製
在在上述程式碼中,我們使用了binary.Write
函數將結構體User
轉換為位元組數組,其中buf
變數為寫入的緩衝區。
- 將位元組陣列轉換為結構體
要將位元組陣列轉換為結構體,我們可以使用以下方法:
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)
}
|
登入後複製
在在上述程式碼中,我們使用了binary.Read
函數將位元組陣列轉換為結構體User
,其中buf
變數為讀取的緩衝區。
總結
在Go語言中,透過使用encoding/binary
套件中的函數,我們可以方便地將結構體轉換為位元組數組,或將字節數組轉換為結構體。這種轉換在網路程式設計或與其他程式語言互動時非常有用,可以讓我們更有效率地處理結構化資料。
以上是struct轉換byte golang的詳細內容。更多資訊請關注PHP中文網其他相關文章!