gob ve İkili Kodlama
Go değerlerini kodlayın
gob ve İkili Kodlama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
gob Nedir
encoding/gob, Go değerlerini serileştirmek için Go'ya özgü bir ikili biçimdir. Küçük ve hızlıdır; Go'dan Go'ya iletişim ve diskte depolama için idealdir.
gob ve JSON Karşılaştırması
JSON metin tabanlı, insanlar tarafından okunabilir ve diller arasıdır. gob ikili biçimdedir, yalnızca Go'ya özgüdür; ancak kodlama için daha küçük ve daha hızlıdır. Her iki uç da Go programı olduğunda gob kullanın.
Arabelleğe Kodlama
Bir gob.Encoder, herhangi bir io.Writer üzerine yazar. Burada ikili çıktıyı tutmak için bir bytes.Buffer kullanıyoruz.
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())
}Arabellekten Kod Çözme
Bir gob.Decoder, bir io.Reader üzerinden okur ve tıpkı Unmarshal gibi bir işaretçiyi doldurur.
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)
}Yapıları Kodlama
gob, yapıları doğal olarak işler. Yalnızca dışa aktarılan alanlar kodlanır.
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)
}Eşlemeleri ve Dilimleri Kodlama
Eşlemeler ve dilimler gibi bileşik türler şeffaf biçimde kodlanır ve kodları çözülür.
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)
}Kendini Açıklayan Akışlar
gob akışları tür bilgilerini içerir; bu nedenle kod çözücü, biraz farklı ancak uyumlu bir yapıyla eşleşse bile değerleri yeniden oluşturabilir. Fazladan veya eksik alanlara izin verilir.
Yalnızca Dışa Aktarılan Alanlar
JSON gibi gob da yalnızca dışa aktarılan alanları kodlar. Dışa aktarılmayan (küçük harfle başlayan) alanlar sessizce atlanır.
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)
}Diğer İkili Seçenekler
Ham ve sabit boyutlu ikili veriler için encoding/binary, tamsayıları ve kayan noktalı sayıları büyük veya küçük endian biçiminde yazar. gob'dan daha düşük seviyelidir ve kendini açıklamaz.
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
var buf bytes.Buffer
binary.Write(&buf, binary.BigEndian, uint32(258))
fmt.Println(buf.Bytes())
}Her Birini Ne Zaman Kullanmalı
Şunları seçin:
json- API'ler, yapılandırma, diller arası kullanımgob- Go'dan Go'ya iletişim, küçük boyut, yapılarla kolay kullanımbinary- tam bayt yerleşimleri, protokoller
İnsan Okumasına Uygun Değil
gob çıktısı ikili biçimdedir; yazdırıldığında anlamsız karakterler görünür. Bu, küçük boyutun karşılığında ödenen bedeldir. İnsanların okuyacağı günlükler için değil, makineler için kullanın.
Hızlı Kontrol
gob hangi durumda JSON'dan daha iyi bir seçimdir?
Özet
gob ve ikili kodlama:
- Go'dan Go'ya ikili iletişim için
gob.NewEncoder/NewDecoder - Küçük boyutlu, kendini açıklayan ve yalnızca dışa aktarılan alanları kullanan yapı
- Tam bayt yerleşimleri için
encoding/binary - Diller arası kullanım ve okunabilirlik için JSON hâlâ en iyi seçenektir
Sıkça Sorulan Sorular
“gob ve İkili Kodlama” dersi ücretsiz mi?
Evet — “gob ve İkili Kodlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“gob ve İkili Kodlama” dersinde ne öğreneceğim?
Go değerlerini kodlayın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“gob ve İkili Kodlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- encoding/json Tekrarı
- encoding/xml
- encoding/csv
- gob ve İkili Kodlama