>백엔드 개발 >Golang >golang 구조체 转[]byte

golang 구조체 转[]byte

王林
王林원래의
2023-05-13 09:30:36868검색

Golang은 웹 개발, 클라우드 컴퓨팅, 데이터 과학, 인공 지능 및 기타 분야에서 널리 사용되는 효율적인 프로그래밍 언어입니다. 그중 Golang의 구조체 유형은 매우 일반적으로 사용되는 데이터 유형입니다. 구조 유형을 []byte 유형으로 변환해야 하는 경우가 많습니다.

Golang 구조체를 []byte로 변환하려면 다음 문제를 이해해야 합니다.

  1. Golang의 구조체 유형 정의
  2. Golang의 []byte 유형 정의 및 사용법
  3. Golang의 구조체 유형 변환 to [] 바이트 유형 구현

Golang의 구조체 유형 정의

Golang에서 구조체 유형은 다양한 유형의 데이터 멤버를 구성하는 데 사용되는 복합 데이터 유형입니다. 구조 유형에는 다양한 멤버 변수가 순서대로 포함되어 있습니다. 이러한 멤버 변수는 int, string, bool, 부동 소수점 숫자 및 기타 구조 유형 변수와 같은 모든 유형의 변수일 수 있습니다. 구조 유형의 정의는 일반적으로 다음과 같습니다.

type Person struct {
    Name    string
    Age     int
    Address string
}

위 코드에서는 Name, Age 및 Address라는 세 가지 멤버 변수를 포함하는 Person이라는 구조 유형을 정의합니다.

Golang의 []바이트 유형 정의 및 사용

[]바이트 유형은 Golang에 내장된 유형으로 이진 데이터를 나타내는 데 사용됩니다. Golang에서 []byte 유형은 실제로 8비트 부호 없는 정수 시퀀스를 나타내는 uint8 유형의 별칭입니다. []byte 유형은 슬라이스 유형이기 때문에 동적으로 늘어나고 줄어들 수 있으므로 가변 길이 바이트 배열을 나타내는 데 이상적입니다.

Golang에서는 다음과 같이 []byte 유형 변수를 생성할 수 있습니다:

var data []byte

또는 make 함수를 사용하여 지정된 크기의 []byte 유형 변수를 생성합니다:

data := make([]byte, 1024)

Golang의 struct 유형은 [ ] 바이트 유형 구현

Golang에서 Person 구조 유형이 정의되면 Person 유형의 인스턴스를 []바이트 유형으로 쉽게 변환할 수 있습니다.

p := Person {
    Name: "Tom",
    Age:  18,
    Address: "Beijing",
}
data, err := json.Marshal(p)

위 코드에서는 json.Marshal( ) 함수를 사용하여 Person 유형의 인스턴스 p를 []byte 유형의 데이터로 변환합니다.

마찬가지로 인코딩/바이너리 패키지를 사용하여 바이너리 스트림의 구조를 []바이트 유형으로 변환할 수도 있습니다.

import (
    "bytes"
    "encoding/binary"
)

func Struct2Bytes(s interface{}) ([]byte, error) {
    buf := new(bytes.Buffer)
    err := binary.Write(buf, binary.LittleEndian, s)
    if err != nil {
        return nil, err
    }
    return buf.Bytes(), nil
}

위 코드에서는 인코딩/바이너리 패키지의 Write 함수를 사용하여 구조 본문 유형 s는 이진 스트림에서 []byte 유형으로 변환됩니다.

요약

이 기사에서는 Golang의 구조체 유형 정의와 구조 유형을 []바이트 유형으로 변환하는 방법에 대해 논의했습니다. 구조 유형 변환을 구현할 때 직렬화를 위해 JSON 또는 바이너리 스트림 형식을 사용할 수 있습니다. Golang의 struct 타입과 []byte 타입에 대한 심층적인 이해를 통해 Golang을 더욱 효과적으로 활용하여 다양한 애플리케이션과 시스템을 구현할 수 있습니다.

위 내용은 golang 구조체 转[]byte의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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