`append` 함수의 이해 및 사용
Emily Parker
Product Engineer · Leapcell

Key Takeaways
append
함수는 슬라이스의 크기를 동적으로 조정하고 새 슬라이스를 반환합니다.- 용량이 부족하면
append
는 새로운 기본 배열을 할당합니다. - 변경 사항을 유지하려면 항상
append
의 결과를 다시 할당하십시오.
Go에서 슬라이스는 배열에 대한 더 유연한 대안을 제공하는 다재다능하고 강력한 데이터 구조입니다. 슬라이스에서 가장 흔하게 수행되는 작업 중 하나는 요소를 추가하는 것입니다. 이 기사에서는 append
함수의 메커니즘, 사용법 및 명심해야 할 중요한 고려 사항을 자세히 살펴봅니다.
슬라이스의 기본
append
함수를 살펴보기 전에 슬라이스가 무엇인지 이해하는 것이 중요합니다. Go의 슬라이스는 기본 배열의 연속된 세그먼트에 대한 설명자이며 동적 크기 조정을 제공합니다. 배열과 달리 슬라이스는 길이가 고정되어 있지 않아 더 유연하고 강력한 데이터 구조를 만들 수 있습니다.
다음은 슬라이스를 선언하고 초기화하는 방법입니다.
var numbers []int // 정수 슬라이스 선언
이 시점에서 numbers
는 길이가 0이고 용량이 0인 nil 슬라이스입니다. 다음과 같이 값을 사용하여 초기화할 수 있습니다.
numbers = []int{1, 2, 3, 4, 5} // 값을 사용하여 슬라이스 초기화
append
함수 사용
append
함수는 Go에 내장되어 있으며 슬라이스 끝에 요소를 추가하는 데 사용됩니다. 그 서명은 다음과 같습니다.
func append(slice []T, elements ...T) []T
slice
는 요소가 추가될 원래 슬라이스입니다.elements
는 슬라이스에 추가할 새 요소입니다.- 이 함수는 원래 요소와 추가된 요소가 포함된 새 슬라이스를 반환합니다.
단일 요소 추가
슬라이스에 단일 요소를 추가하려면:
numbers := []int{1, 2, 3} numbers = append(numbers, 4) fmt.Println(numbers) // 출력: [1 2 3 4]
여러 요소 추가
여러 요소를 한 번에 추가할 수도 있습니다.
numbers := []int{1, 2, 3} numbers = append(numbers, 4, 5, 6) fmt.Println(numbers) // 출력: [1 2 3 4 5 6]
또는 ...
연산자를 사용하여 다른 슬라이스를 추가할 수 있습니다.
numbers := []int{1, 2, 3} moreNumbers := []int{4, 5, 6} numbers = append(numbers, moreNumbers...) fmt.Println(numbers) // 출력: [1 2 3 4 5 6]
중요한 고려 사항
-
용량 및 할당: 슬라이스에 충분한 용량이 있는 경우
append
함수는 새 기본 배열을 할당하지 않고 새 요소를 추가합니다. 용량이 부족하면append
는 새 배열을 할당하고 기존 요소를 복사한 다음 새 요소를 추가합니다. 이 동작은 특히 대규모 슬라이스 또는 성능이 중요한 애플리케이션에서 작업할 때 이해하는 것이 중요합니다. -
슬라이스 재할당:
append
함수는 업데이트된 슬라이스를 반환합니다. 결과를 원래 슬라이스 변수 또는 다른 변수에 다시 할당하는 것이 필수적입니다. 그렇게 하지 않으면 원래 슬라이스가 변경되지 않은 상태로 유지됩니다.numbers := []int{1, 2, 3} append(numbers, 4) fmt.Println(numbers) // 출력: [1 2 3]
위의 예에서
append
의 결과가 다시 할당되지 않았으므로numbers
는 변경되지 않은 상태로 유지됩니다. -
Nil 슬라이스에 추가: nil 슬라이스에 요소를 추가할 수 있습니다. Go는 새 기본 배열을 만들어 이를 정상적으로 처리합니다.
var numbers []int numbers = append(numbers, 1, 2, 3) fmt.Println(numbers) // 출력: [1 2 3]
-
빈 슬라이스 추가: 빈 슬라이스(또는 요소 없음)를 다른 슬라이스에 추가해도 원래 슬라이스는 변경되지 않습니다.
numbers := []int{1, 2, 3} emptySlice := []int{} numbers = append(numbers, emptySlice...) fmt.Println(numbers) // 출력: [1 2 3]
결론
append
함수는 유연성과 동적 크기 조정 기능을 제공하는 슬라이스 작업에서 Go의 기본 도구입니다. 특히 용량 및 메모리 할당과 관련된 동작을 이해하는 것은 효율적이고 효과적인 Go 코드를 작성하는 데 중요합니다. 슬라이스와 append
함수를 마스터하면 Go의 강력한 데이터 구조의 잠재력을 최대한 활용할 수 있습니다.
FAQs
할당된 배열이 있는 새 슬라이스가 자동으로 생성됩니다.
아니요, 재할당해야 하는 새 슬라이스를 반환합니다.
예, 요소를 직접 나열하거나 다른 슬라이스에 ...
연산자를 사용할 수 있습니다.
저희 Leapcell은 Go 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무료로 무제한 프로젝트 배포
- 사용량에 대해서만 비용을 지불하십시오. 요청도 없고 요금도 없습니다.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼만 지불하십시오.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 고도의 동시성을 쉽게 처리할 수 있도록 자동 확장됩니다.
- 운영 오버헤드가 전혀 없으므로 구축에만 집중하십시오.
문서에서 자세히 알아보세요!
X에서 저희를 팔로우하세요: @LeapcellHQ