>  기사  >  백엔드 개발  >  Go에서 데이터 구조를 효율적으로 인코딩 및 디코딩하는 방법은 무엇입니까?

Go에서 데이터 구조를 효율적으로 인코딩 및 디코딩하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-29 01:28:30764검색

How to Efficiently Encode and Decode Data Structures in Go?

Go에서 데이터 구조 인코딩 및 디코딩

Go에서는 전송을 위해 데이터 구조를 바이트 배열로 인코딩 및 디코딩해야 하는 경우가 많습니다. 또는 저장. 이 문서에서는 이 작업을 효율적이고 강력하게 수행하기 위한 기술을 살펴봅니다.

형식 캐스팅을 수행하려면 안전하지 않은 패키지를 주의해서 사용하세요. 더 안전한 대안은 아래와 같이 인코딩/바이너리 패키지를 활용하는 것입니다.

<code class="go">// T represents a simple data structure.
type T struct {
    A int64
    B float64
}

// EncodeT converts the T struct to a byte array.
func EncodeT(t T) ([]byte, error) {
    buf := &bytes.Buffer{}
    err := binary.Write(buf, binary.BigEndian, t)
    return buf.Bytes(), err
}

// DecodeT converts a byte array to a T struct.
func DecodeT(b []byte) (T, error) {
    t := T{}
    buf := bytes.NewReader(b)
    err := binary.Read(buf, binary.BigEndian, &t)
    return t, err
}</code>

사용 예:

<code class="go">t := T{A: 0xEEFFEEFF, B: 3.14}
encoded, err := EncodeT(t)
if err != nil {
    panic(err)
}

decoded, err := DecodeT(encoded)
if err != nil {
    panic(err)
}

fmt.Printf("Encoded: %x", encoded)
fmt.Printf("Decoded: %x %f", decoded.A, decoded.B)</code>

사용자 정의 변환 기능 또는 인코딩/gob 패키지도 활용할 수 있습니다. 보다 복잡한 사용 사례에 적합합니다.

위 내용은 Go에서 데이터 구조를 효율적으로 인코딩 및 디코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.