<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>最佳实践 on Chen Shungen</title><link>https://chenshungen.cn/tags/%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/</link><description>Recent content in 最佳实践 on Chen Shungen</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 15 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://chenshungen.cn/tags/%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/index.xml" rel="self" type="application/rss+xml"/><item><title>Go 语言后端开发实践总结</title><link>https://chenshungen.cn/blog/golang-backend/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://chenshungen.cn/blog/golang-backend/</guid><description>&lt;h2 id="为什么选择-go">为什么选择 Go？&lt;/h2>
&lt;p>Go 语言在后端开发中的优势不言而喻：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>编译速度快&lt;/strong>：秒级编译，开发体验流畅&lt;/li>
&lt;li>&lt;strong>并发原语优秀&lt;/strong>：goroutine + channel 模型简洁强大&lt;/li>
&lt;li>&lt;strong>部署简单&lt;/strong>：单二进制文件，无依赖&lt;/li>
&lt;li>&lt;strong>性能优异&lt;/strong>：接近 C 的性能，远超脚本语言&lt;/li>
&lt;/ul>
&lt;h2 id="项目结构推荐">项目结构推荐&lt;/h2>
&lt;div class="highlight-wrapper">
 &lt;button class="copy-code-btn" type="button" aria-label="Copy code to clipboard">
 &lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
 &lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2">&lt;/rect>
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">&lt;/path>
 &lt;/svg>
 &lt;span class="copy-text">Copy&lt;/span>
 &lt;/button>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">project/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── cmd/ # 应用入口
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── server/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── main.go
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── internal/ # 内部包（不对外暴露）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── handler/ # HTTP 处理器
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── service/ # 业务逻辑
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── repository/ # 数据访问
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── model/ # 数据模型
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── pkg/ # 可复用的公共包
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── api/ # API 定义（proto/openapi）
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── config/ # 配置文件
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── deploy/ # 部署相关&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;h2 id="错误处理模式">错误处理模式&lt;/h2>
&lt;p>Go 的错误处理虽然冗长，但有其设计哲学。推荐的做法：&lt;/p></description></item></channel></rss>