Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tukar struktur golang kepada bait

Tukar struktur golang kepada bait

WBOY
WBOYasal
2023-05-10 22:54:361580semak imbas

Dalam pengaturcaraan, bersiri dan penyahserikatan data adalah tugas yang sangat biasa. Di Golang, kita boleh menggunakan pakej "pengekodan/perduaan" dalam perpustakaan standard untuk menukar struktur data kepada jujukan bait, yang amat berguna dalam penghantaran dan penyimpanan data. Artikel ini akan memperkenalkan cara menukar struktur kepada urutan bait menggunakan Golang.

1. Struktur di Golang

Di Golang, struktur ialah struktur data yang ditentukan pengguna yang membolehkan kami menggabungkan jenis data yang berbeza bersama-sama untuk membentuk jenis data yang lebih kompleks. Sintaks untuk mentakrifkan struktur adalah seperti berikut:

type 结构体名 struct {
  字段名1 数据类型1
  字段名2 数据类型2
  ……
}

Sebagai contoh, kita boleh mentakrifkan struktur Orang untuk mewakili maklumat seseorang:

type Person struct {
  Name string
  Age int
  Height float64
}

2. Urutan bait dalam Golang
di Golang Dalam , anda boleh menggunakan kepingan bait untuk mewakili jujukan bait, yang boleh mensirikan struktur data ke dalam jujukan bait untuk penghantaran atau penyimpanan dalam fail. Sebagai contoh, kita boleh mencipta kepingan bait kosong menggunakan pernyataan berikut:

b := make([]byte, 0)

3 Tukarkan struktur kepada jujukan bait

Pakej "pengekodan/perduaan" dalam Golang menyediakan satu set. Fungsi untuk menukar jenis data Golang kepada jujukan bait. Untuk struct, kita boleh menggunakan fungsi "binary.Write" untuk menukarnya kepada urutan bait. Berikut ialah contoh:

package main

import (
  "encoding/binary"
  "fmt"
)

type Person struct {
  Name string
  Age int
  Height float64
}

func main() {
  p := Person{"Tom", 20, 1.8}
  b := make([]byte, 0)

  binary.Write(&b, binary.LittleEndian, p)

  fmt.Println(b)
}

Dalam contoh ini, kami mencipta struktur Orang, menyusunnya menjadi kepingan bait menggunakan mod binari, dan kemudian mengeluarkan hirisan bait. Kita dapat melihat bahawa output ialah:

[3 84 111 109 20 0 0 0 0 0 0 0 0 0 0 0 236 81 184 30 133 235 64]

Output ini sebenarnya adalah hasil daripada menukar "Tom", "20" dan "1.8" ke dalam urutan bait. Mod binari digunakan di sini, dan mod little-endian digunakan (iaitu, bait rendah disimpan pada kedudukan permulaan).

Kita dapat melihat bahawa jujukan bait yang dijana mengandungi nama medan dan maklumat jenis struktur, kerana maklumat ini perlu diketahui semasa penyahserikatan untuk memulihkan struktur data dengan betul.

4. Tukarkan jujukan bait kepada struktur

Untuk menyahsiri jujukan bait ke dalam struktur, kita boleh menggunakan fungsi "binary.Read". Berikut ialah contoh:

package main

import (
  "bytes"
  "encoding/binary"
  "fmt"
)

type Person struct {
  Name   string
  Age    int
  Height float64
}

func main() {
  p := Person{"Tom", 20, 1.8}
  b := make([]byte, 0)

  binary.Write(&b, binary.LittleEndian, p)

  out := new(Person)
  buf := bytes.NewReader(b)
  binary.Read(buf, binary.LittleEndian, out)

  fmt.Printf("%+v", *out)
}

Dalam contoh ini, kita mula-mula menyusun struktur Orang menjadi kepingan bait menggunakan "binary.Write". Kami kemudian menggunakan "bytes.NewReader" untuk menghiris bait ke dalam penimbal. Akhir sekali, kami menggunakan fungsi "binary.Read" untuk membaca data dalam penimbal ke dalam struktur Orang baharu dan mengeluarkan hasilnya.

Dalam kes ini, outputnya ialah:

{Name:"Tom", Age:20, Height:1.8}

Ini menunjukkan bahawa kami berjaya menyahsiri jujukan bait ke dalam struktur Orang.

Ringkasan

Di Golang, anda boleh menggunakan pakej "pengekodan/perduaan" untuk menukar struktur data kepada jujukan bait. Ini sangat berguna kerana ia membolehkan kita memindahkan data ke komputer lain atau menyimpannya dalam fail. Untuk menukar struktur kepada urutan bait, kita boleh menggunakan fungsi "binary.Write", dan untuk menyahsiri urutan bait menjadi struktur, kita boleh menggunakan fungsi "binary.Read". Fungsi ini boleh mengendalikan jenis data yang berbeza dan menyokong endianness yang berbeza.

Saya harap artikel ini akan membantu untuk menukar struktur kepada jujukan bait dalam Golang.

Atas ialah kandungan terperinci Tukar struktur golang kepada bait. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:golang muat turun dan pasangArtikel seterusnya:golang muat turun dan pasang