Go Academy · Pelajaran

gob dan Pengekodan Binari

Enkod nilai Go

Pelajaran 4 daripada 413 langkah

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 bahasa
  • gob - antara Go, padat dan mudah digunakan dengan struktur
  • binary - 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/NewDecoder untuk binari antara program Go
  • Padat, menerangkan diri sendiri dan hanya menggunakan medan yang dieksport
  • encoding/binary untuk susun atur bait tepat
  • JSON kekal pilihan terbaik untuk keserasian merentas bahasa dan kebolehbacaan
Percuma untuk bermula

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

  1. Imbas Kembali encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob dan Pengekodan Binari
← Kembali ke Go Academy