PHpullh

STATIC LEARNING LIBRARY

Go 학습 예제

200개 예제를 개별 HTML 문서로 제공합니다. 검색엔진과 공유 링크에서 각 주제를 바로 열 수 있습니다.

Go

Hello World

Go

기초 문법

포인터 심화

포인터를 사용하여 값을 직접 수정하고, nil 포인터를 안전하게 처리합니다. 구조체 포인터와 슬라이스 포인터의 차이를 이해합니다.

타입 임베딩

구조체에 다른 타입을 임베딩하여 필드와 메서드를 승격(promote)시킵니다. 상속 대신 합성을 사용하는 Go의 핵심 패턴입니다.

internal 패키지

internal 디렉토리의 코드는 부모 디렉토리의 하위 패키지에서만 import할 수 있습니다. Go 컴파일러가 강제하는 접근 제한입니다.

타입 추론

Go 컴파일러는 인자 타입에서 타입 파라미터를 자동 추론합니다. 명시적 타입 인자가 불필요한 경우가 대부분입니다.

Go

함수

제네릭 함수 & 타입 제약

Go 1.18+의 제네릭은 타입 파라미터로 코드 재사용성을 높입니다. constraints 패키지의 인터페이스로 타입을 제약하고, ~ 틸드로 기반 타입(underlying type)까지 허용할 수 있습니다.

Go

구조체/인터페이스

Go

컬렉션

sync.Map

sync.Map은 동시성 안전한 맵입니다. 키가 안정적이고 고루틴별로 다른 키를 사용할 때 최적입니다.

Go

고루틴/채널

버퍼 채널

버퍼 채널은 지정된 크기만큼 블로킹 없이 데이터를 저장합니다. 생산자와 소비자의 속도 차이를 완화합니다.

sync.Pool

sync.Pool로 임시 객체를 재사용하여 GC 압력을 줄입니다. 빈번한 할당/해제가 있는 곳에 효과적입니다.

Go

에러처리

Go

파일/IO

go:embed 지시문

Go 1.16+의 //go:embed 지시문은 파일이나 디렉터리를 바이너리에 직접 포함합니다. 설정 파일, HTML 템플릿, 정적 자산을 별도 배포 없이 단일 바이너리로 패키징할 수 있습니다.

Go

패턴

리플렉션 기초 — reflect 패키지

reflect 패키지는 런타임에 타입 정보를 조회하고 값을 동적으로 조작합니다. ORM, JSON 직렬화, DI 프레임워크 등 범용 라이브러리 개발에 필수적이지만, 성능과 타입 안전성을 트레이드오프합니다.

Go

테스트

Go

성능

빌드 태그 & 크로스 컴파일

Go의 빌드 태그(//go:build)로 플랫폼별 코드를 분리하고, 환경 변수로 손쉽게 크로스 컴파일합니다. CGO 없이 정적 바이너리를 생성하여 Docker scratch 이미지나 다른 OS용 배포가 가능합니다.

Go

함수형