Rumah > Artikel > pembangunan bahagian belakang > Apa itu golang Gob
gob ialah alat pengekodan/penyahkod untuk siri struktur data yang disertakan dengan pakej Golang digunakan untuk pengekodan dan Penyahkod digunakan untuk penyahkodan. Gob menggunakan antara muka io.Writer untuk mencipta objek Pengekod melalui fungsi NewEncoder() dan memanggil kaedah Encode() untuk melaksanakan operasi pengekodan menggunakan antara muka io.Reader untuk mencipta objek Penyahkod melalui fungsi dan panggilan NewDecoder(). kaedah Decode() untuk melengkapkan operasi penyahkodan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Nama penuh gob ialah: Go binary
Golang didatangkan dengan alat pengekodan/penyahkodan bersiri struktur data, yang bermaksud gob boleh bercakap Struktur data dalam go disirikan menjadi sesuatu, dan ia juga boleh dinyahsiri! Kami akan melihat apa yang berubah menjadi siri kemudian sama ada ia bertukar menjadi rentetan atau aliran binari, tidak kira apa yang ia bertukar menjadi.
Apabila menggunakan Gob, kita perlu memberi perhatian kepada objek Pengekod dan Penyahkod Seperti yang dicadangkan oleh namanya, satu digunakan semasa pengekodan dan satu lagi digunakan semasa menyahkod objek dahulu:
Jadi jelaslah bahawa kedua-dua fungsi ini perlu dipanggil untuk mendapatkan objek Pengekod dan Penyahkod. Ambil perhatian bahawa parameter di sini ialah jenis antara muka io.Writer dan io.Reader Kami memperkenalkan kedua-dua antara muka ini dalam kuliah sebelumnya, jadi parameter yang diperlukan di sini ialah objek yang masing-masing melaksanakan jenis antara muka io.Writer dan io.Reader.
Pengekod dan Penyahkod masing-masing mempunyai satu kaedah utama:
Melihat di sini kita sudah boleh mendapatkan kesimpulan berikut :
Gob menggunakan antara muka io.Writer, mencipta objek Pengekod melalui fungsi NewEncoder() dan melaksanakan operasi pengekodan dengan memanggil kaedah Encode() menggunakan antara muka io.Reader, mencipta Dekoder objek melalui fungsi NewDecoder() dan Panggil kaedah Decode() untuk menyelesaikan operasi penyahkodan!
Seterusnya, mari cuba gunakan Pengekod dan Penyahkod ini, dan mulakan dengan gob dengan mudah Mari lihat contoh pertama
Contoh 1: Struktur data dan bait. Penukaran Penampan antara. (dikodkan ke dalam kepingan bait)
1package main 2 3import ( 4 "bytes" 5 "fmt" 6 "encoding/gob" 7 "io" 8) 9 10//准备编码的数据 11type P struct { 12 X, Y, Z int 13 Name string 14} 15 16//接收解码结果的结构 17type Q struct { 18 X, Y *int32 19 Name string 20} 21 22func main() { 23 //初始化一个数据 24 data := P{3, 4, 5, "CloudGeek"} 25 //编码后得到buf字节切片 26 buf := encode(data) 27 //用于接收解码数据 28 var q *Q 29 //解码操作 30 q = decode(buf) 31 //"CloudGeek": {3,4} 32 fmt.Printf("%q: {%d,%d}\n", q.Name, *q.X, *q.Y) 33 34} 35 36func encode(data interface{}) *bytes.Buffer { 37 //Buffer类型实现了io.Writer接口 38 var buf bytes.Buffer 39 //得到编码器 40 enc := gob.NewEncoder(&buf) 41 //调用编码器的Encode方法来编码数据data 42 enc.Encode(data) 43 //编码后的结果放在buf中 44 return &buf 45} 46 47func decode(data interface{}) *Q { 48 d := data.(io.Reader) 49 //获取一个解码器,参数需要实现io.Reader接口 50 dec := gob.NewDecoder(d) 51 var q Q 52 //调用解码器的Decode方法将数据解码,用Q类型的q来接收 53 dec.Decode(&q) 54 return &q 55}
Contoh 2: Pensirian dan penyahserikan struktur data ke fail
1package main 2 3import ( 4 "encoding/gob" 5 "os" 6 "fmt" 7) 8 9//试验用的数据类型 10type Address struct { 11 City string 12 Country string 13} 14 15//序列化后数据存放的路径 16var filePath string 17 18func main() { 19 filePath = "./address.gob" 20 encode() 21 pa := decode() 22 fmt.Println(*pa) //{Chengdu China} 23} 24 25//将数据序列号后写到文件中 26func encode() { 27 pa := &Address{"Chengdu", "China"} 28 //打开文件,不存在的时候新建 29 file, _ := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY, 0666) 30 defer file.Close() 31 32 //encode后写到这个文件中 33 enc := gob.NewEncoder(file) 34 enc.Encode(pa) 35} 36 37//从文件中读取数据并反序列化 38func decode() *Address { 39 file, _ := os.Open(filePath) 40 defer file.Close() 41 42 var pa Address 43 //decode操作 44 dec := gob.NewDecoder(file) 45 dec.Decode(&pa) 46 return &pa 47}
Di atas 2 Setiap contoh tidak sukar I kod yang dialih keluar seperti pengendalian ralat dan cuba sedaya upaya untuk menganotasi setiap keping kod Selepas membaca dua contoh ini dengan sabar, anda seharusnya dapat memahami intipati pengekodan dan penyahkodan gob.
Berdasarkan pemahaman apa itu gob, jika anda perlu menggunakan gob untuk pembangunan, adalah disyorkan untuk membaca dokumentasi rasmi secara terperinci untuk mengetahui butiran lanjut: https://golang.org/pkg/encoding/gob /
[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Apa itu golang Gob. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!