go언어
글 수 53
이 글은 Effective Go를 일부 번역한 글입니다.
자료
Append
이제 내장 함수 append
의 설계를 설명하는 데 모자랐던 조각을 갖췄다. append
의 용법은 이전에 만든 Append
함수와 다르다. 형태는 이렇다.
func append(slice []T, elements ...T) []T
여기서 T는 주어진 유형을 대신한다. 실제 Go에선 호출자가 T 형을 정의하도록 함수를 작성할 수 없다. 그래서 append
가 내장 함수인 것이다. 컴파일러가 도와줘야 하기 때문이다.
append
는 조각 뒤에 요소를 덧붙이고 결과를 반환한다. 결과를 반환하는 이유는 우리가 직접 쓴 Append
에서 봤듯이 기반 배열이 바뀔 수 있기 때문이다.
x := []int{1,2,3} x = append(x, 4, 5, 6) fmt.Println(x)
위 간단한 예제는 [1 2 3 4 5 6]을 출력한다. append
는 Printf
처럼 가변 개수 인수를 받아 동작한다.
하지만 Append
처럼 조각에 조각을 붙이려면 어찌해야 할까? 간단하다. 위 Output
호출처럼 호출에 ...를 쓰라. 아래 토막은 위와 출력이 같다.
x := []int{1,2,3} y := []int{4,5,6} x = append(x, y...) fmt.Println(x)
저 ...
가 없으면 유형이 달라 컴파일할 수 없다. y
는 int
형이 아니다.