<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Convention on philipjkim</title><link>https://philipjkim.cc/tags/convention/</link><description>Recent content in Convention on philipjkim</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 26 Aug 2025 19:34:33 +0900</lastBuildDate><atom:link href="https://philipjkim.cc/tags/convention/index.xml" rel="self" type="application/rss+xml"/><item><title>Go 패키지 구조 컨벤션: Standard Go Project Layout</title><link>https://philipjkim.cc/posts/20250826-go-package-conventions/</link><pubDate>Tue, 26 Aug 2025 19:34:33 +0900</pubDate><guid>https://philipjkim.cc/posts/20250826-go-package-conventions/</guid><description>&lt;p&gt;Go 언어 프로젝트의 패키지 구조는 일반적으로 몇 가지 컨벤션을 따르며, &lt;code&gt;pkg&lt;/code&gt;와 &lt;code&gt;internal&lt;/code&gt; 디렉토리는 그중 핵심적인 역할을 합니다. 단순히 코드를 기능별로 묶는 것을 넘어, 패키지의 &lt;strong&gt;가시성(visibility)과 의존성 방향을 명확히&lt;/strong&gt; 하여 프로젝트의 유지보수성을 높이는 것이 목적입니다.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;이 글은 Gemini 2.5 Pro 모델이 제 Go package convention 에 대한 질문에 답변한 내용입니다.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Go 커뮤니티에서 널리 통용되는 표준 프로젝트 레이아웃(&lt;a href="https://github.com/golang-standards/project-layout"&gt;golang-standards/project-layout&lt;/a&gt;)을 기반으로 각 디렉토리의 역할과 베스트 프랙티스를 자세히 설명해 드리겠습니다.&lt;/p&gt;
&lt;h2 id="-pkg-디렉토리-공개-라이브러리-public-library"&gt;📦 &lt;code&gt;pkg&lt;/code&gt; 디렉토리: 공개 라이브러리 (Public Library)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;pkg&lt;/code&gt; 디렉토리&lt;/strong&gt;에는 &lt;strong&gt;외부 프로젝트에서 가져다 쓸 수 있는(importable) 공개 라이브러리 성격의 코드&lt;/strong&gt;를 위치시킵니다.&lt;/p&gt;</description></item></channel></rss>