[Go] 헷갈리는 부분 모음

식빵·2025년 4월 26일
0

go

목록 보기
2/2

요즘 Go 언어를 정말 재밌게 공부 중입니다.
다만 Go 언어만의 특색 때문에 제가 굉장히 혼란스러운 경우가 많았는데요,

이와 관련해서 책을 읽거나 인터넷 구글링을 통해서 많이 해소하는데,
이때 도움이 됐던 링크나, 글들을 모아봤습니다.

앞으로도 헷갈리는 점이 생기면 이 게시물에 추가로 내용이 작성될 예정입니다.


Go 에는 참조형 타입은 없다.

https://dave.cheney.net/2017/04/29/there-is-no-pass-by-reference-in-go

Go 공식 문서에도 Reference Type 이라는 표현을 굉장히 많이 사용합니다...만!
실제로는 C++ 에서 말하는 참조형 타입 같은 건 없습니다!


Array vs Slice

https://dave.cheney.net/2018/07/12/slices-from-the-ground-up

Slice 타입이 내부적으로는 구조체라는 점도 눈여겨 봅시다.


Map 타입은 그 자체가 포인터

이 링크를 통해서 중점적으로 봐야될 부분은 Slice 가 자체적으로 구조체인 것과 달리
Map 은 생성된 Go 내부적으로 생성한 구조체를 가르키는 포인터라는 점입니다.
(아래 그림 참고)


Slice, Map 중 Slice 에만 포인터를 주는 이유

why-slice-values-can-sometimes-go-stale-but-never-map-values#55521138

가끔 go 언어로 작성된 코드를 보면 이상하게 function 파라티터로
slice 포인터 타입은 자주 주는데, Map 이나 channel 타입은 그런 경우가 없습니다.
왜 그럴까요?


Interface 는 어떻게 동작하는가?

https://research.swtch.com/interfaces


Value Receiver vs Pointer Receiver

function - Value receiver vs. pointer receiver - Stack Overflow

profile
백엔드 개발자로 일하고 있는 식빵(🍞)입니다.

0개의 댓글