gob dan Pengekodan Binari
Enkod nilai Go
gob dan Pengekodan Binari ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah gob
encoding/gob ialah format binari khusus Go untuk mensiri nilai Go. Format ini padat dan pantas, sesuai untuk komunikasi antara program Go serta penyimpanan pada cakera.
gob berbanding JSON
JSON ialah teks, mudah dibaca manusia dan serasi merentas bahasa. gob ialah binari, hanya untuk Go, tetapi lebih padat dan lebih pantas untuk dikodkan. Gunakan gob apabila kedua-dua hujungnya ialah atur cara Go.
Mengekod ke dalam Penimbal
gob.Encoder menulis kepada mana-mana io.Writer. Di sini kita menggunakan bytes.Buffer untuk menyimpan hasil binari.
package main
import (
"bytes"
"encoding/gob"
"fmt"
)
func main() {
var buf bytes.Buffer
enc := gob.NewEncoder(&buf)
enc.Encode(42)
fmt.Println("bytes written:", buf.Len())
}Menyahkod daripada Penimbal
gob.Decoder membaca daripada io.Reader dan mengisi penuding, sama seperti Unmarshal.
package main
import (
"bytes"
"encoding/gob"
"fmt"
)
func main() {
var buf bytes.Buffer
gob.NewEncoder(&buf).Encode(42)
var n int
gob.NewDecoder(&buf).Decode(&n)
fmt.Println(n)
}Mengekod Struktur
gob mengendalikan struktur secara semula jadi. Hanya medan yang dieksport akan dikodkan.
package main
import (
"bytes"
"encoding/gob"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
var buf bytes.Buffer
gob.NewEncoder(&buf).Encode(User{"Ann", 30})
var u User
gob.NewDecoder(&buf).Decode(&u)
fmt.Println(u)
}Mengekod Peta dan Hirisan
Jenis komposit seperti peta dan hirisan boleh dikodkan serta dinyahkodkan secara telus.
package main
import (
"bytes"
"encoding/gob"
"fmt"
)
func main() {
var buf bytes.Buffer
gob.NewEncoder(&buf).Encode([]int{1, 2, 3})
var s []int
gob.NewDecoder(&buf).Decode(&s)
fmt.Println(s)
}Strim yang Menerangkan Diri
Strim gob menyertakan maklumat jenis, jadi penyahkod boleh membina semula nilai walaupun dipetakan kepada struktur yang sedikit berbeza tetapi serasi. Medan tambahan atau yang tiada boleh diterima.
Hanya Medan yang Dieksport
Sama seperti JSON, gob hanya mengkodkan medan yang dieksport. Medan yang tidak dieksport (huruf kecil) dilangkau secara senyap.
package main
import (
"bytes"
"encoding/gob"
"fmt"
)
type T struct {
Public int
private int
}
func main() {
var buf bytes.Buffer
gob.NewEncoder(&buf).Encode(T{Public: 1, private: 2})
var out T
gob.NewDecoder(&buf).Decode(&out)
fmt.Println(out.Public, out.private)
}Pilihan Binari Lain
Untuk binari mentah bersaiz tetap, encoding/binary menulis integer dan nombor titik apungan dalam susunan bait big atau little endian. Ia lebih aras rendah daripada gob dan tidak menerangkan strimnya sendiri.
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
var buf bytes.Buffer
binary.Write(&buf, binary.BigEndian, uint32(258))
fmt.Println(buf.Bytes())
}Bila Menggunakan Setiap Pilihan
Pilih:
json- API, konfigurasi dan keserasian merentas bahasagob- antara Go, padat dan mudah digunakan dengan strukturbinary- susun atur bait tepat dan protokol
Tidak Mudah Dibaca Manusia
Hasil gob ialah binari; mencetaknya akan memaparkan aksara yang tidak bermakna. Itulah pertukaran demi kepadatan. Gunakannya untuk mesin, bukan untuk catatan yang perlu dibaca.
Semakan Ringkas
Bilakah gob lebih sesuai berbanding JSON?
Imbas Kembali
Pengekodan gob dan binari:
gob.NewEncoder/NewDecoderuntuk binari antara program Go- Padat, menerangkan diri sendiri dan hanya menggunakan medan yang dieksport
encoding/binaryuntuk susun atur bait tepat- JSON kekal pilihan terbaik untuk keserasian merentas bahasa dan kebolehbacaan
Pelajari Go dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “gob dan Pengekodan Binari” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “gob dan Pengekodan Binari”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “gob dan Pengekodan Binari”?
Enkod nilai Go Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Go Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “gob dan Pengekodan Binari” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Imbas Kembali encoding/json
- encoding/xml
- encoding/csv
- gob dan Pengekodan Binari