>백엔드 개발 >Golang >초기값과 용량을 모두 사용하여 슬라이스를 초기화하는 방법은 무엇입니까?

초기값과 용량을 모두 사용하여 슬라이스를 초기화하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2024-02-08 22:18:301049검색

초기값과 용량을 모두 사용하여 슬라이스를 초기화하는 방법은 무엇입니까?

PHP 편집기 Baicao에서는 코드 효율성을 높이기 위해 슬라이스 초기화 시 초기값과 용량을 모두 사용하는 방법을 소개합니다. PHP에서 슬라이스는 필요에 따라 동적으로 늘리거나 줄일 수 있는 동적 배열입니다. 일반적으로 슬라이스를 초기화할 때 초기값을 지정할 수 있지만 용량을 직접 지정할 수는 없습니다. 하지만 초기값과 용량을 모두 사용하여 슬라이스를 초기화하는 트릭이 있으니 살펴보겠습니다!

질문 내용

코드의 일부는 다음과 같습니다.

으아악

Slicesfibbo在c++中没有像向量那样的reserved函数来为切片保留estimatedsize 용량 확장 시 복사 시간을 줄여줍니다. 따라서 초기화 시 예상 크기만 용량에 할당할 수 있습니다. 그러나 다음 중 어느 것도 합법적이지 않습니다.

으아악

이 문제에 대한 해결책이 있나요? 아니면 서투른 코드이고 다음이 유일한 방법일까요?

const estimatedsize = 10000
var init_arr = [...]int{1,1,2,3,5,8,13}
var fibbo []int = make([]int, len(init_arr), estimatedsize)    
}

Solution

아니요, 불가능합니다. 이는 디자인 결정을 이끈 Go 디자인 철학의 일부입니다: "복잡함을 숨기지 마세요

."

귀하의 "투박한" 코드는 실제로 이동 중에 이 작업을 수행하는 데 선호되고 관용적인 방법이지만 한 가지 작은 변화가 있습니다.

으아악

내가 변경한 유일한 변경 사항은 형식을 제외하고 var 선언에서 유형을 제거하는 것이었습니다. 이는 완전히 중복되었기 때문입니다. 즉,

으아악

댓글에서 지적했듯이 입력에 다른 변경 사항을 적용하지 않으면 내장 copy을 사용하여 for 루프를 제거할 수도 있습니다.

으아악

위 내용은 초기값과 용량을 모두 사용하여 슬라이스를 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제