Menggunakan Penampan Protokol Google untuk penyirian data dalam bahasa Go

WBOY
Lepaskan: 2023-06-16 14:13:51
asal
1993 orang telah melayarinya

Penimbal Protokol Google (selepas ini dirujuk sebagai ProtoBuf) ialah format siri data yang ringan dan cekap yang digunakan secara meluas untuk penghantaran dan penyimpanan data dalam sistem teragih. Sebagai bahasa pengaturcaraan moden, bahasa Go juga sangat mesra dalam menyokong ProtoBuf Artikel ini akan memperkenalkan cara menggunakan ProtoBuf untuk siri data dalam bahasa Go.

1. Pasang ProtoBuf

Sebelum anda mula menggunakan ProtoBuf, anda perlu memasangnya terlebih dahulu. Anda boleh memuat turun pakej binari yang sepadan dengan sistem pengendalian daripada tapak web rasmi (https://developers.google.com/protocol-buffers/) untuk pemasangan, atau anda boleh menggunakan pengurus pakej sistem untuk memasang (seperti Ubuntu: sudo apt-get install protobuf-compiler ).

Selepas pemasangan selesai, anda boleh menggunakan arahan berikut untuk menyemak sama ada pemasangan berjaya:

$ protoc --version
libprotoc 3.6.1

2. Tentukan format mesej

Sebelum menggunakan ProtoBuf untuk siri data, anda perlu menentukan format mesej. Dalam ProtoBuf, format mesej ditakrifkan melalui fail .proto. Sebagai contoh, kami mentakrifkan format mesej bernama Person:

syntax = "proto3";

message Person {
string name = 1;
int32 age = 2;
alamat rentetan berulang = 3;
}

di mana sintaks menentukan versi sintaks yang digunakan oleh ProtoBuf, mesej mentakrifkan jenis mesej dan nama, umur dan alamat ialah medan dalam mesej. Medan ditentukan oleh pengecam berangka, yang mesti unik.

Perlu diingat bahawa ProtoBuf menyokong jenis mesej bersarang, dan satu jenis mesej boleh ditakrifkan sebagai medan jenis mesej lain.

3. Susun dan jana kod Go

ProtoBuf perlu menyusun fail .proto menjadi kod dalam bahasa yang sepadan untuk digunakan dalam program. Dalam bahasa Go, anda boleh menggunakan pemalam protoc-gen-go untuk penyusunan, atau anda boleh menggunakan pemalam github.com/golang/protobuf/protoc-gen-go untuk penyusunan. Artikel ini mengambil kaedah pertama sebagai contoh untuk diperkenalkan.

Mula-mula anda perlu memasang pemalam:

$ go get -u github.com/golang/protobuf/protoc-gen-go

Kemudian gunakan yang berikut arahan untuk menyusun fail .proto:

$ protoc --go_out= *.proto

Ini akan menjana fail Go bernama person.pb.go, yang mengandungi takrifan Orang tersebut. jenis mesej serta kaedah bersiri dan penyahserilan berkaitan.

4. Gunakan ProtoBuf untuk siri data

Sangat mudah untuk menggunakan ProtoBuf untuk siri data dalam program. Mengambil mesej Orang sebagai contoh, kita boleh menggunakan kod berikut untuk mensiri objek Orang menjadi data binari:

pakej utama

import (

"log"

"github.com/golang/protobuf/proto"
Salin selepas log masuk
Salin selepas log masuk

)

func main() {

p := &Person{
    Name:    "Tom",
    Age:     20,
    Address: []string{"Shanghai", "Beijing"},
}

data, err := proto.Marshal(p)
if err != nil {
    log.Fatal("marshaling error: ", err)
}

log.Println(data)
Salin selepas log masuk

}

Dalam kod di atas, kita mula-mula mencipta objek Person p, kemudian memanggil kaedah proto.Marshal untuk menyerikannya ke dalam data binari dan mencetak ia keluar. Ambil perhatian bahawa apabila menggunakan kaedah proto.Marshal, anda perlu menghantar penunjuk ke objek Orang.

5. Gunakan ProtoBuf untuk penyahsiran data

Serupa dengan pensirilan data, menggunakan ProtoBuf untuk penyahserilan data juga sangat mudah. Kita boleh menggunakan kod berikut untuk menyahsiri data binari bersiri menjadi objek Orang:

utama pakej

import (

"log"

"github.com/golang/protobuf/proto"
Salin selepas log masuk
Salin selepas log masuk

)

fungsi utama( ) {

data := []byte{10, 3, 84, 111, 109, 16, 20, 26, 8, 83, 104, 97, 110, 103, 104, 97, 105, 18, 7, 66, 101, 105, 106, 105, 110, 103}

p := &Person{}
err := proto.Unmarshal(data, p)

if err != nil {
    log.Fatal("unmarshaling error: ", err)
}

log.Println(p)
Salin selepas log masuk

}

Dalam kod di atas, kami mula-mula mentakrifkan data binari, kemudian memanggil kaedah proto.Unmarshal untuk menyahsirikannya menjadi objek Orang dan mencetaknya .

6. Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan ProtoBuf untuk siri data dalam bahasa Go. Perlu diingat bahawa apabila menggunakan ProtoBuf untuk pensirilan data dan penyahsirilan, format mesej mesti ditakrifkan dan disusun untuk menjana kod dalam bahasa yang sepadan. Selain itu, menggunakan ProtoBuf untuk pensirilan data dan penyahserilan adalah sangat mudah Anda hanya perlu memanggil kaedah yang sepadan untuk menyelesaikannya.

Atas ialah kandungan terperinci Menggunakan Penampan Protokol Google untuk penyirian data dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan