값이 복사되었다는 사실과, 그 값이 가리키는 데이터까지 분리되었다는 사실은 다르다 규칙은 하나, 차이는 무엇이 복사되는가 통째로 복사배열 · 구조체 · int · bool[1000]int = 8000 B복사본을 고쳐도 원본은 그대로크면 전달 비용이 커진다 헤더만 복사, 안쪽은 공유슬라이스 · map · string[]int = 24 B (ptr · len · cap)창 두 개가 같은 배열을 본다append 부작용 · aliasing 두 칸짜리 상자인터페이스any = 16 B (타입 | 값)타입 칸이 차면 nil이 아니다nil 포인터 error 함정 넘기든, 대입하든, 리시버로 받든 이 셋 중 하나가 복사된다 싸다고 안심할 때 공유 중이라는 걸 잊기 쉽다 Go · 개념 정리Go 구조체 복사얕은 복사로 맵이 함께 바뀌는 이유인터페이스, 슬라이스, defer, 임베딩, context — 다섯 편을 쓰고 돌아보니 함정이 대부분 두 개의 축에서 나오고 있었다. 하나는 "모든 것은 복사된다", 다른 하나는 "클래스 없이 객체지향을 한다".2026.09.14