Go설계 2

Go 프로젝트 구조와 패키지 설계: 실무에서 흔히 쓰는 기준 정리

동시성까지 한 번 훑었다면, 이제는**“Go 프로젝트를 어떻게 구성하는 게 좋은가”**라는 질문으로 넘어오게 된다.Go는 문법뿐만 아니라프로젝트 구조와 패키지 설계에서도 강한 의견을 가진 언어다.처음에는 “너무 자유로운 것 아닌가?”라는 느낌을 받을 수 있지만,몇 가지 기준만 잡아두면 오히려 유지보수가 쉬워진다.이 글에서는Go 프로젝트의 기본 구조패키지를 나누는 기준실제로 많이 사용하는 디렉터리 패턴을 중심으로 정리한다.Go 프로젝트 구조에는 정답이 없다먼저 전제부터 정리할 필요가 있다.Go에는 공식적으로 강제되는 프로젝트 구조가 없다Spring, Django처럼“이 디렉터리는 반드시 이 역할” 같은 규칙이 존재하지 않는다.대신 Go는 다음 원칙을 강하게 밀고 있다.패키지는 작게의존성은 한 방향으로불필요..

backend 2026.01.19

Go 언어 인터페이스(interface): 느슨한 결합과 다형성 이해하기

구조체와 메서드까지 익혔다면, 이제 Go 설계의 핵심이라고 할 수 있는interface를 이해할 차례다.Go 인터페이스는 다른 언어의 인터페이스나 추상 클래스와 개념적으로 비슷해 보이지만,사용 방식과 철학은 꽤 다르다.특히 “명시적으로 구현하지 않는다”는 점에서 처음 접하면 헷갈리기 쉽다.이 글에서는Go 인터페이스가 무엇인지어떻게 구현되는지실무에서 왜 자주 쓰이는지를 예제와 함께 정리해본다.interface란 무엇인가Go에서 인터페이스는 메서드 집합의 정의다.type Reader interface { Read() string}필드는 없다어떤 메서드를 가져야 하는지만 정의한다이 인터페이스를 구현하려면,해당 메서드를 가진 타입이면 자동으로 인터페이스를 만족한다.명시적인 implements가 없다Go 인..

backend 2026.01.13