> 백엔드 개발 > Golang > GOB 및 Base64를 사용하여 Go에서 구조체를 효율적으로 직렬화 및 역직렬화하려면 어떻게 해야 합니까?

GOB 및 Base64를 사용하여 Go에서 구조체를 효율적으로 직렬화 및 역직렬화하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-04 08:08:13
원래의
358명이 탐색했습니다.

How Can I Efficiently Serialize and Deserialize Structs in Go Using GOB and Base64?

Go의 효율적인 직렬화 및 역직렬화

Golang은 구조체를 문자열로 직렬화 및 역직렬화하기 위한 다양한 접근 방식을 제공합니다. 세션 구조체와 같은 복잡한 구조로 작업할 때 성능을 유지하면서 데이터 충실도를 보장하는 접근 방식을 사용하는 것이 중요합니다.

GOB 및 Base64 사용

한 가지 효과적인 방법은 다음과 같습니다. GOB 인코더와 base64 인코딩을 사용합니다. 이를 달성하는 방법은 다음과 같습니다.

import (
    "encoding/base64"
    "encoding/gob"
    "bytes"
)

// Custom type for serialization
type Session struct {
    Properties map[string]interface{}
    Permissions []int64
}

// GOB encoder
func ToGOB64(m Session) string {
    b := bytes.Buffer{}
    e := gob.NewEncoder(&b)
    err := e.Encode(m)
    if err != nil {
        panic(err)
    }
    return base64.StdEncoding.EncodeToString(b.Bytes())
}

// GOB decoder
func FromGOB64(str string) Session {
    m := Session{}
    by, err := base64.StdEncoding.DecodeString(str)
    if err != nil {
        panic(err)
    }
    b := bytes.Buffer{}
    b.Write(by)
    d := gob.NewDecoder(&b)
    err = d.Decode(&m)
    if err != nil {
        panic(err)
    }
    return m
}
로그인 후 복사

사용자 정의 유형(이 경우 세션)을 지원하려면 GOB 인코더에 등록할 수 있습니다.

func init() {
    gob.Register(Session{})
}
로그인 후 복사

기타 직렬화 형식

GOB가 적합하지 않은 경우 Go에서 사용할 수 있는 대체 직렬화 형식이 있습니다. JSON, XML 및 protobuf로. 각 형식은 서로 다른 장점과 장단점을 제공합니다.

성능

직렬화 및 역직렬화의 성능은 주로 데이터 크기와 선택한 형식에 따라 달라집니다. GOB는 상대적으로 빠른 경향이 있는 반면, JSON과 XML은 느리지만 사람이 더 읽기 쉽습니다. 다양한 형식을 벤치마킹하면 특정 애플리케이션에 가장 적합한 옵션을 결정하는 데 도움이 될 수 있습니다.

위 내용은 GOB 및 Base64를 사용하여 Go에서 구조체를 효율적으로 직렬화 및 역직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿