Rumah pembangunan bahagian belakang Golang Bagaimana untuk menyusun jenis tersuai apabila menggunakan Golang?

Bagaimana untuk menyusun jenis tersuai apabila menggunakan Golang?

Jun 03, 2024 pm 05:07 PM
bersiri Jenis tersuai

Dalam Go, kaedah untuk mensiri jenis tersuai ialah: melaksanakan antara muka json.Marshaler apabila menggunakan pensirilan JSON dan melaksanakan antara muka GobEncoder dan GobDecoder dalam pakej pengekodan/gob apabila menggunakan pensirilan Gob.

使用 Golang 时如何对自定义类型进行序列化?

Sirikan jenis tersuai menggunakan Golang

Di Golang, siri merujuk kepada menukar keadaan objek kepada format yang boleh disimpan atau dihantar. Untuk jenis tersuai, anda perlu melaksanakan antara muka bersiri dalam pakej pengekodan/json atau pengekodan/gob. encoding/json 或者 encoding/gob 包中的序列化接口。

使用 JSON 序列化

  • 实现 json.Marshaler 接口,实现 MarshalJSON 方法。
  • MarshalJSON 方法接收自定义类型的值并返回其 JSON 表示。

实战案例:序列号员工结构体

package main

import (
    "encoding/json"
    "fmt"
)

// Employee is a custom type representing an employee.
type Employee struct {
    Name   string
    Age    int
    Skills []string
}

// MarshalJSON implements the json.Marshaler interface.
func (e Employee) MarshalJSON() ([]byte, error) {
    type Alias Employee
    return json.Marshal(&struct{ Alias }{e})
}

func main() {
    emp := Employee{Name: "John Doe", Age: 30, Skills: []string{"golang", "javascript"}}

    encoded, err := json.Marshal(emp)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("JSON:", string(encoded))
}
Salin selepas log masuk

使用 Gob 序列化

  • 实现 encoding/gob 包中的 GobEncoderGobDecoder 接口。
  • GobEncode 方法接收自定义类型的值并将其写入一个缓冲区。
  • GobDecode
Gunakan siri JSON

  • Laksanakan antara muka json.Marshaler dan laksanakan kaedah MarshalJSON.
  • Kaedah MarshalJSON menerima nilai jenis tersuai dan mengembalikan perwakilan JSONnya.

    🎜🎜🎜Kes praktikal: Struktur pekerja nombor bersiri🎜🎜
    package main
    
    import (
        "encoding/gob"
        "fmt"
        "io/ioutil"
        "os"
    )
    
    // ComplexStruct represents a complex data structure.
    type ComplexStruct struct {
        Map        map[string]int
        Slice      []int
        InnerStruct struct {
            Field1 string
            Field2 int
        }
    }
    
    func main() {
        // Register the ComplexStruct type for serialization.
        gob.Register(ComplexStruct{})
    
        // Create a ComplexStruct instance.
        cs := ComplexStruct{
            Map: map[string]int{"key1": 1, "key2": 2},
            Slice: []int{3, 4, 5},
            InnerStruct: struct {
                Field1 string
                Field2 int
            }{"value1", 6},
        }
    
        // Encode the ComplexStruct to a file.
        f, err := os.Create("data.gob")
        if err != nil {
            fmt.Println("Error creating file:", err)
            return
        }
        defer f.Close()
    
        enc := gob.NewEncoder(f)
        if err := enc.Encode(cs); err != nil {
            fmt.Println("Error encoding:", err)
            return
        }
    
        // Decode the ComplexStruct from the file.
        data, err := ioutil.ReadFile("data.gob")
        if err != nil {
            fmt.Println("Error reading file:", err)
            return
        }
    
        dec := gob.NewDecoder(bytes.NewReader(data))
        var decoded ComplexStruct
        if err := dec.Decode(&decoded); err != nil {
            fmt.Println("Error decoding:", err)
            return
        }
    
        // Print the decoded struct.
        fmt.Println("Decoded:", decoded)
    }
    Salin selepas log masuk
    🎜🎜Menggunakan pensirilan Gob🎜🎜
    • Laksanakan GobEncoderdalam pakej encoding/gob > dan antara muka GobDecoder. 🎜
    • Kaedah GobEncode menerima nilai jenis tersuai dan menulisnya pada penimbal. 🎜 Kaedah
    • GobDecode membaca data daripada penimbal dan memulihkan nilai jenis tersuai. 🎜🎜🎜🎜Kes praktikal: nombor siri ialah struktur yang kompleks🎜🎜rrreee

    Atas ialah kandungan terperinci Bagaimana untuk menyusun jenis tersuai apabila menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Di Jawa, bagaimanakah kita boleh menyusun senarai objek menggunakan flexjson? Di Jawa, bagaimanakah kita boleh menyusun senarai objek menggunakan flexjson? Sep 05, 2023 pm 11:09 PM

Flexjson ialah perpustakaan ringan untuk mensiri dan menyahsiri objek Java ke dan dari format JSON. Kita boleh menyusun senarai objek menggunakan kaedah serialize() kelas JSONSerializer. Kaedah ini melakukan serialisasi cetek pada contoh sasaran. Kita perlu menghantar senarai objek jenis senarai sebagai parameter kepada kaedah serialize(). Contoh sintaks publicStringserialize(Objecttarget) importflexjson.JSONSerializer;importjava.util.*;publicclassJsonSerial

Bagaimanakah siri Java mempengaruhi prestasi? Bagaimanakah siri Java mempengaruhi prestasi? Apr 16, 2024 pm 06:36 PM

Kesan siri pada prestasi Java: Proses siri bergantung pada refleksi, yang akan menjejaskan prestasi dengan ketara. Serialisasi memerlukan penciptaan aliran bait untuk menyimpan data objek, mengakibatkan peruntukan memori dan kos pemprosesan. Mensiri objek besar menggunakan banyak memori dan masa. Objek bersiri meningkatkan beban apabila dihantar melalui rangkaian.

Bagaimanakah pustaka fungsi C++ melakukan pensirilan dan penyahserikatan? Bagaimanakah pustaka fungsi C++ melakukan pensirilan dan penyahserikatan? Apr 18, 2024 am 10:06 AM

Panduan Pensirilan dan Penyahserikatan Perpustakaan C++ Pensirian: Mencipta aliran output dan menukarnya kepada format arkib. Mensiri objek ke dalam arkib. Penyahserialisasian: Mencipta aliran input dan memulihkannya daripada format arkib. Nyahserialisasi objek daripada arkib. Contoh praktikal: Serialisasi: Mencipta aliran keluaran. Buat objek arkib. Cipta dan sirikan objek ke dalam arkib. Penyahserikatan: Buat aliran input. Buat objek arkib. Cipta objek dan deserialisasikannya daripada arkib.

Kemahiran pemprosesan data PHP: Cara menggunakan fungsi bersiri dan menyahsiri untuk melaksanakan pensirilan dan penyahsirilan data Kemahiran pemprosesan data PHP: Cara menggunakan fungsi bersiri dan menyahsiri untuk melaksanakan pensirilan dan penyahsirilan data Jul 29, 2023 am 10:49 AM

Kemahiran pemprosesan data PHP: Cara menggunakan fungsi bersiri dan menyahsiri untuk melaksanakan pensirilan data dan penyahseririan Pensirilan dan penyahsiriran ialah salah satu kemahiran pemprosesan data yang biasa digunakan dalam sains komputer. Dalam PHP, kita boleh menggunakan fungsi serialize() dan unserialize() untuk melaksanakan operasi bersiri dan penyahserikan data. Artikel ini akan memberi anda pengenalan terperinci tentang cara menggunakan kedua-dua fungsi ini dan memberikan contoh kod yang berkaitan. 1. Apakah yang dimaksudkan dengan serialisasi dan deserialisasi dalam pengaturcaraan komputer?

Bagaimana untuk menentukan dan menggunakan jenis tersuai menggunakan bahasa Go? Bagaimana untuk menentukan dan menggunakan jenis tersuai menggunakan bahasa Go? Jun 05, 2024 pm 12:41 PM

Dalam Go, jenis tersuai boleh ditakrifkan menggunakan kata kunci jenis (struct) dan mengandungi medan bernama. Mereka boleh diakses melalui pengendali akses medan dan boleh mempunyai kaedah yang dilampirkan untuk memanipulasi keadaan contoh. Dalam aplikasi praktikal, jenis tersuai digunakan untuk menyusun data yang kompleks dan memudahkan operasi. Sebagai contoh, sistem pengurusan pelajar menggunakan pelajar jenis tersuai untuk menyimpan maklumat pelajar dan menyediakan kaedah untuk mengira gred purata dan kadar kehadiran.

Apakah keperluan untuk fungsi C++ mengembalikan jenis tersuai? Apakah keperluan untuk fungsi C++ mengembalikan jenis tersuai? Apr 19, 2024 pm 03:33 PM

Fungsi C++ boleh mengembalikan jenis tersuai yang memenuhi keperluan berikut: Jenis ditakrifkan sepenuhnya. Pembina lalai. Jenis nilai memerlukan pembina salinan.

Pensirian dan penyahserikatan antara muka dan kelas abstrak dalam Java Pensirian dan penyahserikatan antara muka dan kelas abstrak dalam Java May 02, 2024 am 08:33 AM

Antara muka tidak boleh bersiri secara langsung Kelas abstrak boleh bersiri tetapi hanya jika ia tidak mengandungi medan bukan statik, bukan sementara atau mengatasi kaedah writeObject() dan readObject() boleh dilaksanakan melalui kelas konkrit yang melaksanakan antara muka atau mengatasi writeObject() dan readObject pelaksanaan kelas Abstrak kaedah ().

Bagaimana untuk menyusun susunan sifat menggunakan perpustakaan Jackson di Jawa? Bagaimana untuk menyusun susunan sifat menggunakan perpustakaan Jackson di Jawa? Aug 28, 2023 pm 12:45 PM

@JsonPropertyOrder ialah anotasi yang digunakan pada peringkat kelas. Ia mengambil sebagai atribut senarai medan yang mentakrifkan susunan medan muncul dalam rentetan yang dijana oleh siri JSON objek. Sifat yang disertakan dalam pengisytiharan anotasi boleh disirikan terlebih dahulu (mengikut susunan ia ditakrifkan), diikuti oleh mana-mana sifat yang tidak termasuk dalam definisi. Contoh sintaks public@interfaceJsonPropertyOrder importcom.fasterxml.jackson.core.*;importcom.fasterxml.jackson.databind.*;importcom.fasterxml.jac

See all articles