Gob、Golang のデータ エンコーダー

王林
リリース: 2024-04-07 14:48:02
オリジナル
991 人が閲覧しました

Gob は、カスタム データ型のエンコードとデコードに使用できる Golang データ エンコーダーです。エンコードステップ:encoding/gob パッケージを導入します。 GobEncoder インターフェイスを実装するカスタム タイプを作成します。 gob.Encode() を使用してデータをエンコードします。デコード ステップ: エンコード タイプに一致するカスタム タイプを作成します。 gob.NewDecoder() を使用してデコーダを作成します。 Decode() を使用してデータをデコードします。実用的な例: Person タイプをバイナリ データにシリアル化し、標準出力に出力します。

Gob、Golang のデータ エンコーダー

Gob: Golang のデータ エンコーダー

Golang は、データをエンコードおよびデコードするための強力な関数セットを提供します。これらのエンコーダの 1 つである Gob は、ネットワーク送信用のカスタム データ タイプをエンコードするのに特に役立ちます。

Gob を使用したエンコード

Gob を使用してデータをエンコードするには、次の手順に従います。

  1. はじめにencoding/gob パッケージ:

    import "encoding/gob"
    ログイン後にコピー
  2. GobEncoder インターフェイスを実装するカスタム タイプを作成します:

    type Person struct {
     Name string
     Age  int
    }
    
    func (p Person) GobEncode(w io.Writer) error {
     encoder := gob.NewEncoder(w)
     encoder.Encode(p.Name)
     encoder.Encode(p.Age)
     return nil
    }
    ログイン後にコピー
  3. 使用 gob.Encode() データをエンコードする関数:

    var p Person
    encoder := gob.NewEncoder(os.Stdout)
    encoder.Encode(p)
    ログイン後にコピー

##デコードに Gob を使用します

Gob を使用するにはデータをデコードするには、次の手順を実行します。

  1. エンコード タイプに一致するカスタム タイプを作成します。

    type Person struct {
     Name string
     Age  int
    }
    ログイン後にコピー

  2. Use

    gob.NewDecoder() デコーダを作成します:

    decoder := gob.NewDecoder(r)
    ログイン後にコピー

  3. Decode() 関数を使用してデータをデコードします:

    decoder.Decode(&p)
    ログイン後にコピー

実用的なケース

次に、

Person 型をバイナリ データにシリアル化する実際的なケースを示します:

package main

import (
    "encoding/gob"
    "fmt"
    "io"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    var buf io.Writer = os.Stdout
    enc := gob.NewEncoder(buf)
    person := Person{Name: "John", Age: 30}
    enc.Encode(person)
}
ログイン後にコピー
コードを実行すると

Person type はバイナリ データをエンコードし、標準出力に出力します。

Gob Encoder は、複雑なデータ型のネットワーク送信または永続ストレージのための効率的で使いやすいツールです。

以上がGob、Golang のデータ エンコーダーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート