> 백엔드 개발 > Golang > 컴파일 타임에 배열 크기를 알 수 없는 경우 Go에서는 동적 배열 할당을 어떻게 처리합니까?

컴파일 타임에 배열 크기를 알 수 없는 경우 Go에서는 동적 배열 할당을 어떻게 처리합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-06 03:32:09
원래의
993명이 탐색했습니다.

How Does Go Handle Dynamic Array Allocation When Array Sizes Are Unknown at Compile Time?

Go의 동적 배열 할당: 슬라이스 사용

다른 프로그래밍 언어와 달리 Go 배열은 런타임에 직접 할당되지 않습니다. 이는 배열의 크기를 동적으로 결정해야 할 때 문제가 될 수 있습니다.

고정 크기 배열의 딜레마

할당을 시도하는 다음 코드를 고려하세요. 런타임 크기가 있는 배열:

n := 1
var a [n]int
로그인 후 복사

Go에서 배열 크기를 다음과 같이 요구하므로 이 코드는 오류가 발생합니다. 컴파일 시간에 알려진 상수 표현식입니다.

해결책: 슬라이스

이 딜레마에 대한 해결책은 배열 대신 슬라이스를 사용하는 것입니다. 배열과 달리 슬라이스는 런타임에 크기를 결정할 수 있습니다. 내장 함수 make()를 사용하면 지정된 길이와 용량을 가진 슬라이스를 만들 수 있습니다.

s := make([]int, n, 2*n)
로그인 후 복사

이 예에서 s는 초기 길이가 n이고 용량이 있는 정수 슬라이스입니다. 2*n. 이는 슬라이스가 재할당되기 전에 최대 2*n 요소를 보유할 수 있음을 의미합니다.

왜 배열이 아닌가?

Go가 왜 그렇지 않은지 궁금할 수도 있습니다. 런타임 크기로 배열을 직접 할당할 수 있습니다. 이에 대한 근거는 Go가 대부분의 시나리오에서 배열보다 슬라이스를 선호한다는 것입니다. 슬라이스는 동적으로 크기를 조정할 수 있는 유연성을 제공하고 배열과 함께 제공되는 명시적인 메모리 관리가 필요하지 않습니다.

따라서 Go에서 권장되는 접근 방식은 런타임 할당의 유연성과 단순성을 모두 제공하는 슬라이스로 작업하는 것입니다. 자동 메모리 관리

위 내용은 컴파일 타임에 배열 크기를 알 수 없는 경우 Go에서는 동적 배열 할당을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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