본문으로 건너뛰기

태그

#Go 런타임 3편

Go · 개념 정리

Go append가 원본을 바꾸는 이유슬라이스 · map · string 내부 구조

Go에서 자주 만나는 버그는 들고 있다고 생각한 것과 실제로 들고 있는 것이 다를 때 생긴다. 슬라이스는 데이터가 아니라 창이고, map은 주소를 보장하지 않고, string은 문자 배열이 아니다. 세 자료구조의 레이아웃을 하나씩 열어 본다.

Go · 개념 정리

Go 인터페이스 nil 함정err != nil이 참이 되는 이유

nil 포인터를 반환했는데 err != nil이 참이 되는 이유는 인터페이스 값이 타입과 데이터 두 칸으로 되어 있기 때문이다. 두 칸 구조에서 메서드셋, 인터페이스를 둘 위치, 동적 디스패치 비용까지 따라간다.

Go · 개념 정리

정적 타입·컴파일 언어가 런타임 성능에 미치는 영향 (Go 기준 정리)

컴파일 언어와 정적 타입이 런타임에 어떤 이득으로 바뀌는지 Go를 기준으로 따라갔다. 메모리 레이아웃, 컴파일러 최적화, escape analysis, GC와 스케줄러까지 도구로 직접 확인한다.

esc

최근 글

↑↓ 이동↵ 열기검색 페이지에서 보기 ›