append 함수

2025. 6. 8. 18:39Go

length 가 넘을시 새로운 주소 리턴

func main() {
	// 길이 2, 용량 2 슬라이스 생성
	s := make([]int, 2, 2)
	s[0], s[1] = 1, 2

	// 내부 배열 주소 출력 (첫 요소 주소)
	fmt.Printf("Before append: %p\n", &s[0])

	// 용량 꽉 찼으니 새 배열 할당됨
	s = append(s, 3)

	// 내부 배열 주소 출력 (첫 요소 주소)
	fmt.Printf("After append: %p\n", &s[0])

	// 결과 출력
	fmt.Println("Slice:", s)
}

 

length가 넘지 않으면 기존의 배열 주소 리턴

func main() {
	// 길이 2, 용량 5인 슬라이스 생성 (여유 용량 있음)
	s := make([]int, 2, 5)
	s[0], s[1] = 10, 20

	// 첫 요소 주소 출력
	fmt.Printf("Before append: %p\n", &s[0])

	// 용량이 충분해서 새 배열 할당 없이 append 됨
	s = append(s, 30)

	// 첫 요소 주소 다시 출력
	fmt.Printf("After append: %p\n", &s[0])

	fmt.Println("Slice:", s)
}

'Go' 카테고리의 다른 글

Go의 구조체  (0) 2025.06.08
Scan, Scanf, Scan 차이 정리  (0) 2025.06.03
Hello Go World 코드  (0) 2025.06.03