Golang은 웹 개발, 클라우드 컴퓨팅, 데이터 과학, 인공 지능 및 기타 분야에서 널리 사용되는 효율적인 프로그래밍 언어입니다. 그중 Golang의 구조체 유형은 매우 일반적으로 사용되는 데이터 유형입니다. 구조 유형을 []byte 유형으로 변환해야 하는 경우가 많습니다.
Golang 구조체를 []byte로 변환하려면 다음 문제를 이해해야 합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!