> 백엔드 개발 > Golang > Go 구조의 크기를 바이트 단위로 어떻게 결정합니까?

Go 구조의 크기를 바이트 단위로 어떻게 결정합니까?

Linda Hamilton
풀어 주다: 2024-12-29 16:09:15
원래의
596명이 탐색했습니다.

How Do I Determine the Size of a Go Structure in Bytes?

Go 구조의 크기 결정

Go에서는 unsafe.Sizeof 메소드를 사용하여 프로그래밍 방식으로 구조의 크기에 액세스할 수 있습니다. . 이 메소드는 특정 유형의 값(이 경우 구조체)을 취하고 해당 메모리 크기를 바이트 단위로 반환합니다.

예를 들어 다음 구조체의 크기를 결정하려면:

type Coord3d struct {
    X, Y, Z int64
}
로그인 후 복사

다음 코드를 사용할 수 있습니다:

import (
    "fmt"
    "unsafe"
)

func main() {
    // Create a Coord3d structure
    var coord Coord3d

    // Get the size of the Coord3d structure
    size := unsafe.Sizeof(coord)

    fmt.Println("Size of Coord3d:", size, "bytes")
}
로그인 후 복사

추가 통찰력

unsafe.Sizeof는 메모리 크기를 제공하지만 보고된 크기에는 구조에서 참조하는 메모리가 포함되지 않는다는 점을 고려하는 것이 중요합니다. 예를 들어, 구조에 슬라이스에 대한 참조가 포함된 경우 반환된 크기는 참조된 데이터의 크기가 아닌 슬라이스 설명자의 크기만 나타냅니다.

직관적으로 구조 크기 계산

구조체의 크기를 수동으로 계산하려면 다음 규칙을 고려하세요.

  • 구조체의 크기 구조는 포함된 필드 유형과 순서에 따라 다릅니다.
  • 필드 순서에 따라 다른 패딩이 사용됩니다.
  • 부울, int8/uint8은 1바이트를 차지합니다.
  • int16, uint16은 2바이트를 차지합니다.
  • int32, uint32, float32는 4바이트를 차지합니다.
  • int64, uint64, float64, 포인터는 8바이트를 차지합니다.
  • 문자열은 8바이트의 2가지 정렬을 사용하여 길이가 16바이트입니다.
  • 모든 슬라이스는 24바이트를 차지하며 8개씩 3개 정렬됩니다. bytes.
  • 길이가 n인 배열은 해당 요소 크기의 n배를 차지합니다.

이러한 규칙을 사용하면 구조 크기를 수동으로 결정할 수 있습니다. 그러나 확인을 위해 unsafe.Sizeof 메서드를 사용하여 계산을 교차 확인하는 것이 좋습니다.

위 내용은 Go 구조의 크기를 바이트 단위로 어떻게 결정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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