RSS 줄리아 에반스
팔로우
Go 구조체는 할당 시 복사됩니다. (그리고 내가 놓친 Go에 대한 다른 것들)
저자, 캐주얼한 Go 프로그래머, 할당 중 구조체가 복사되는 방식에 대한 기본적인 오해를 드러내는 버그를 마주쳤다. 구조체가 할당 중 복사되는 것이 아니라 참조되는 것임을 알지 못했기 때문이었다. 이러한 행동은 예상치 못한 결과를 초래했는데, 변수에 할당된 후 구조체를 수정했을 때였다. 저자는 다른 언어에서 변수가 일반적으로 참조로 전달되는 경험이 있었기 때문에 이러한 행동에 놀랐다. 함수 인수에서 pass-by-value와 pass-by-reference의 차이를 이해했지만 변수 할당에 이를 확장하지 않았다. 저자는 또한 Go에서 하위 슬라이스가 원래 슬라이스와 동일한 백킹 배열을 공유하는 것을 발견했는데, 이는 하위 슬라이스에 추가하는 것이 원래 슬라이스를 의도치 않게 수정할 수 있음을 의미한다. 저자는 또한 Go 메서드에서 값 수신자와 포인터 수신자 사이의 차이를 분명하게 이해했는데, 메서드가 호출된 구조체를 변경해야 하는 경우 포인터 수신자가 필요함을 알게 되었다. 저자는 "100 Go Mistakes" 리소스를 그들의 분명하고 간결한 형식으로 인해 칭찬했는데, 이는 저자가 Go의 일반적인 함정들을 쉽게 확인하고 배울 수 있도록 했다. 마지막으로 저자는 "Go by Example," "go.dev/play," 및 "staticcheck"와 "golangci-lint"와 같은 정적 분석 도구를 포함하여 다른 가치 있는 Go 리소스들을 나열했다.