精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 項目布局的實戰經驗:別再濫用 pkg 和 util 了

開發 前端
我們要回歸 Go 的哲學:簡單優先,先能跑,再優雅。多數團隊在項目初期做的過度工程(把 internal/、pkg/、cmd/ 都直接套上)更多是為了 “看起來成熟”,但長期結果往往是維護負擔增加。

最近微信群里有小伙伴再次提出了靈魂疑問:

Go 項目應該怎么組織目錄結構?

這是個反復出現的問題。網上確實有一些過度復雜的博客和示例倉庫,把很多同學都整糊涂了。

今天我們來梳理一下常見的“坑”,以及更實用的項目組織方式。

畢竟 Go 這一門編程語言的核心哲學是:less is more,少點花里胡哨的層次。

核心原則(一句話版)

  • 先把可用的東西做出來,再考慮拆包。
  • 不要為了 “某種慣例” 或 “看起來專業” 而過度設計。
  • internal/、pkg/、cmd/ 這些都是工具,并不是每個項目都必須要用的。

要點與示例

1. main 放哪里?

建議:主程序(CLI / server)放在倉庫根目錄的 main(或直接 main.go)是最簡單也最常用的。

優勢之一是安裝/運行最短路徑。

便于 go install:

# 最短最干凈的安裝方式(root 有 main)
go install github.com/eddycjy/project@latest

只有庫(library)的倉庫自然沒有 main。如果既有庫又有二進制,可以把 main 放子目錄(很多人習慣 cmd/yourcmd/,但 cmd 本身并非必須)。

示例(根目錄有 main):

/project
  go.mod
  main.go      // 程序入口
  lib/         // 如果你還有對外庫
  internal/    // 可選
  README.md

或者把可復用代碼放到一個清晰命名的包,而不是把 main 挪得過遠。

2. internal/ 是特性不是儀式

internal/ 的機制是 Go 工具鏈強制的:internal 下的代碼只能被父目錄(和子級樹)里的包導入。

好處是可以阻止外部依賴,但不是每個項目都需要它。

這時候就涉及到什么時候用?

當你真的有很多對外不暴露但跨包復用的代碼,并且項目會被大量第三方使用時才考慮 internal/。

對絕大多數小中型項目來說,不用 internal/ 更簡單、更靈活。

示例(使用場景):

/project
  internal/
    secrets/   // 只有 project 內部可以 import
  pkg/         // 對外可用庫(慎用 pkg_/)
  main.go

3. 別盲目使用 pkg/

pkg/ 是歷史遺留的慣例,在現代 Go 里沒必要把所有對外包都塞進 pkg/。

包名與路徑應以可讀性與語義為核心。把包放到頂層(/auth、/db、/storage)通常更直觀,且導入路徑更短。

示例對比:

不推薦(多一層 pkg):

import "github.com/you/project/pkg/storage"

更推薦(語義清晰):

import "github.com/you/project/storage"

4. 不要亂建 util、common 等

“工具類” 包看起來方便,但會變成隨手塞東西的垃圾倉庫。把函數/類型放到語義化更強的包里,或放在最常用的使用位置鄰近代碼,而不是一個籠統的 util。

反面示例:

// util/strings.go
package util
func Reverse(s string) string { ... }

更好寫法(語義化):

// text/reverse.go
package text
func Reverse(s string) string { ... }

// 或者直接放在使用它的包里,例如 handler/text_helpers.go

5. 包不要太多(也別千行一包)

Go 可以在一個包里有多個文件,這一點要善用。每新增一個包,就可能增加依賴、回環風險和遷移成本。相反,也不要把完全不相關的代碼塞成一個冗長的包——保持“以用途/語義分包”。

經驗規則:

  • 如果一組代碼有同一語義與同一生命周期,放到同一個包。
  • 每個包最好能在 200–1000 行范圍內(這不是硬性規則,只是可讀性提醒)。
  • 切包優先按“用途”而不是“文件大小”。

6. 文件別太細碎

許多人喜歡把每個小函數放不同文件,結果翻代碼像翻書頁。合理把相關函數聚合到同一文件,便于閱讀。

避免把每個 tiny helper 分成獨立文件。

7. 語義化命名優先于目錄深度

庫名、包名與目錄名應體現用途。例如 applog 比 util/log 更有意義。

這樣看代碼的同學通過 import 一眼能看出大致的用途。

8. 版本管理和 semver 建議

建議盡量使用 0.x 階段語義化版本(保守上 v0.x),在你要打破 API 時給出明確變更說明,而不是過早把版本固定為 v2/v3,導致用戶為小改動分叉倉庫。

換句話說:先發布、后演進,記錄變更而不是封閉。

推薦的最小倉庫模板(實戰)

下面給出一個適合多數小中型項目的極簡布局,能覆蓋 CLI / library 混合場景:

/project
  go.mod
  main.go             // 如果是二進制,把入口放這里
  README.md
  config/              // 配置相關包
  storage/             // 存儲邏輯
  api/                 // HTTP handler / grpc / rpc
  tools/               // 非構建、非導出的腳本 & 工具(可忽略 go build)
  docs/

如果你確實需要多個可發布包,再考慮增加清晰命名的子包,而不是 pkg/ 通用層。

Go 官方建議,要關注細節

Go 官方確實給了一份指南:go.dev/doc/modules/layout[1]。

里面有句話經常被曲解:


Larger packages or commands may benefit from splitting… Initially, put them in internal/.

這里的重點其實是 larger 和 may。

結果很多人一上來就機械套用:不管項目大小,先建個 internal/;

現實是要知道目錄不是 “一步到位” 的事,需要階段性調整和設計。

總結

我們要回歸 Go 的哲學:簡單優先,先能跑,再優雅。多數團隊在項目初期做的過度工程(把 internal/、pkg/、cmd/ 都直接套上)更多是為了 “看起來成熟”,但長期結果往往是維護負擔增加。

把注意力放在清晰的包命名、合理的功能邊界、良好的 README 上,必要時再重構目錄結構和演進會比較好。

參考資料

[1] go.dev/doc/modules/layout: https://go.dev/doc/modules/layout

責任編輯:武曉燕 來源: 腦子進煎魚了
相關推薦

2025-07-04 00:00:00

2025-05-30 08:09:28

2017-11-02 15:07:56

代碼重寫代碼開發

2011-07-07 10:49:41

JavaScript

2013-01-25 10:37:51

敏捷開發

2023-10-23 13:03:04

2020-04-28 14:50:30

短視頻運營實戰

2017-01-05 16:29:00

2015-11-10 09:50:51

IT實施計劃IT

2010-07-06 16:22:14

2015-11-10 09:40:55

IT實施計劃IT

2009-10-20 09:17:27

2025-07-09 07:15:00

AIGenAICIO

2021-05-19 20:20:56

Oracle歸檔修復

2010-02-23 16:17:59

2025-08-29 07:25:00

CIOAI企業

2025-09-28 07:00:00

IT人才招聘風險IT經理

2009-09-10 18:28:00

交換機和路由器連接

2025-06-27 09:00:00

勒索軟件網絡攻擊

2020-11-13 15:20:16

SCSS代碼前端
點贊
收藏

51CTO技術棧公眾號

丰满诱人av在线播放| 国产精品区在线观看| 免费成人结看片| 欧美性色aⅴ视频一区日韩精品| 亚洲电影一二三区| 国产99久久九九精品无码免费| 亚洲国产免费看| 国产一区二区三区在线播放免费观看| 色噜噜狠狠一区二区三区狼国成人| 在线中文字幕第一页| 91麻豆swag| 亚洲精品免费av| 国产成人无码一区二区在线播放| 香蕉综合视频| 亚洲精品综合精品自拍| 亚洲三级在线观看视频| 九色porny自拍视频在线播放| 国产精品三级电影| 国产日韩欧美亚洲一区| 国产一区二区在线播放视频| 亚洲每日在线| 操日韩av在线电影| japanese中文字幕| 国产精品tv| 91精品黄色片免费大全| 成人黄色一区二区| av中文资源在线资源免费观看| 国产精品全国免费观看高清| 久久天天狠狠| 黄色小视频免费观看| 九色综合狠狠综合久久| 国产成人一区二区三区小说| 国产一级淫片a| 你懂的视频一区二区| 丝袜美腿精品国产二区| 久久久久久久久久久国产精品| 99精品中文字幕在线不卡| 欧美乱熟臀69xxxxxx| 天天插天天操天天射| 欲香欲色天天天综合和网| 亚洲电影一区二区三区| 黄色一级片国产| av超碰免费在线| 一区免费观看视频| 亚洲一区二区在线观| 成全电影播放在线观看国语| 久久女同性恋中文字幕| 精品国产乱码久久久久久蜜柚 | 91精彩在线视频| 国产视频一区二区三区在线观看| 久久久水蜜桃| 日韩电影在线观看完整版| av亚洲精华国产精华精华| 成人动漫视频在线观看完整版 | 日韩av在线不卡| 国产一卡二卡三卡四卡| 这里视频有精品| 精品国产乱码久久久久久蜜臀| 国产女主播在线播放| 成人精品毛片| 日韩精品高清在线观看| 特大黑人巨人吊xxxx| 要久久爱电视剧全集完整观看| 国产视频在线观看一区二区| 国产av自拍一区| 欧洲视频一区| 伦伦影院午夜日韩欧美限制| 国产精品白嫩白嫩大学美女| 极品av少妇一区二区| 亚洲97在线观看| 男人天堂av在线播放| 奇米一区二区三区av| 成人激情视频在线| 国产激情视频在线播放| 国产一区欧美二区| 国产精品免费一区二区三区四区 | 久久久综合网站| 婷婷四房综合激情五月| 黄色网页在线看| 亚洲国产精品一区二区久久恐怖片| xxxx18hd亚洲hd捆绑| 视频在线日韩| 欧美一级在线视频| 国产草草浮力影院| 成人免费在线观看av| 米奇精品一区二区三区在线观看| 久一区二区三区| 日日噜噜夜夜狠狠视频欧美人 | 成人在线观看黄| 亚洲日本中文| 亚洲精品久久久久久久久| 人妻熟人中文字幕一区二区| 一区二区三区午夜视频| 国产91精品视频在线观看| 亚洲无码精品国产| yourporn久久国产精品| 亚洲资源在线网| 18video性欧美19sex高清| 在线免费视频一区二区| 被黑人猛躁10次高潮视频| 欧美激情在线精品一区二区三区| 日韩网站免费观看| 久久久久久久黄色片| 精品亚洲国产成人av制服丝袜| 国产视频在线观看一区| 在线免费看av| 欧美日韩免费在线| 原创真实夫妻啪啪av| 九九热爱视频精品视频| 久久99国产精品自在自在app | 国产又黄又粗又猛又爽的| 亚洲高清资源| 91视频九色网站| 成年人在线视频| 岛国av午夜精品| 中文字幕1区2区| 婷婷丁香综合| 国产精品v日韩精品| 日韩在线视频观看免费| 综合久久国产九一剧情麻豆| 黑鬼大战白妞高潮喷白浆| 成人动漫视频| 欧美成人在线影院| 在线观看日韩一区二区| 久久蜜桃av一区二区天堂| 国产精品入口芒果| 欧美a在线观看| 久久精品国产99国产精品澳门| www.毛片.com| 成人av网在线| 日韩精品在线观看av| 粉嫩av国产一区二区三区| 色妞色视频一区二区三区四区| 亚洲GV成人无码久久精品| 成人aa视频在线观看| 人妻无码一区二区三区四区| **国产精品| 色偷偷av亚洲男人的天堂| 欧美另类高清videos的特点| www久久精品| 黄色免费视频大全| 欧美电影免费网站| 68精品久久久久久欧美| 日韩一级在线播放| 午夜久久久久久电影| 国产不卡一二三| 99国产精品| 欧美xxxx黑人又粗又长密月| 精品丝袜在线| 亚洲精品一区二区久| 免费在线观看黄网站| 99久久精品一区二区| 国产精品又粗又长| 欧美日韩麻豆| 国产ts人妖一区二区三区| 国产最新视频在线观看| 欧洲中文字幕精品| av资源在线免费观看| 国产一区二区三区美女| 中文字幕日韩精品无码内射| 国产成人精品亚洲线观看| 九九九久久久久久| 蜜桃av噜噜一区二区三区麻豆| 亚洲一区二区三区自拍| 久久午夜夜伦鲁鲁片| 亚洲激情偷拍| 日韩国产一区久久| 日韩电影免费观看高清完整版在线观看| 日日摸夜夜添一区| www.看毛片| 日韩欧美精品中文字幕| 国产精品成人在线视频| 国产一区二区影院| 国产日韩av网站| 国产中文精品久高清在线不| 国产欧美亚洲精品| 青青草原国产在线| 亚洲欧美精品一区| 国产精品伊人久久 | 伊人久久久久久久久久久久| 亚洲国产电影在线观看| 一级黄色免费毛片| 国产农村妇女精品一二区| 翔田千里亚洲一二三区| 日韩最新av| 国产精品jizz在线观看麻豆| 国产婷婷视频在线 | 日本在线免费中文字幕| 精品区一区二区| 免费视频网站在线观看入口| 亚洲欧美另类综合偷拍| 美国黄色一级毛片| 国产一区二区三区国产| 激情综合在线观看| 91精品91| 欧美一区二区三区电影在线观看| 精品国产一区二| 日韩免费观看高清| 欧美xxxx少妇| 最近2019中文字幕mv免费看| 欧美一级做性受免费大片免费| 欧美午夜不卡在线观看免费| 国产乡下妇女做爰| 国产精品久久久久久久久免费丝袜| 亚洲天堂av网站| 久久99精品视频| 日韩一级在线免费观看| 欧美日韩午夜| 在线看视频不卡| 亚洲理论电影| 国产99午夜精品一区二区三区| 成人国产在线| 人人澡人人澡人人看欧美| 污污在线观看| 中文字幕亚洲字幕| 久草在现在线| 亚洲国产精品高清久久久| av高清一区二区| 欧美日韩一级二级| 国产99免费视频| 黑人巨大精品欧美一区二区一视频 | 久无码久无码av无码| 无码一区二区三区视频| 婷婷五月色综合| 精品国产一级毛片| 久久99精品久久久久久水蜜桃| 欧美经典一区| 亚洲一区二区三区四区视频| 图片一区二区| 国产精品一区二区三| 台湾成人免费视频| 国产精品精品国产| 欧美电影免费观看高清完整| 国产91精品高潮白浆喷水| 看黄在线观看| 97视频在线观看网址| 国产99在线观看| 久久久久成人网| 国产精品国精产品一二| 国模私拍视频一区| sis001亚洲原创区| 国产69精品久久久| 51精品在线| 97高清免费视频| 小视频免费在线观看| 18久久久久久| 成人欧美大片| 国产精品xxxxx| 久草综合在线| 亚洲直播在线一区| 精品中文字幕一区二区三区| 99国产超薄丝袜足j在线观看| 91麻豆精品激情在线观看最新 | 亚洲码国产岛国毛片在线| 91 在线视频| 一区二区三区四区不卡在线| 精品一区在线视频| 红桃av永久久久| 精品久久久久久久久久久国产字幕| 色哟哟一区二区三区| 一区二区自拍偷拍| 7777精品伊人久久久大香线蕉超级流畅| 国产精品免费无遮挡| 日韩欧美高清在线| 五月婷婷深深爱| 在线日韩av观看| 国产精品一卡二卡三卡| 欧美精品xxx| 欧美1级2级| 国产中文日韩欧美| av自拍一区| 明星裸体视频一区二区| 日韩精品免费一区二区在线观看| 中文字幕日韩一区二区三区| 欧美天堂亚洲电影院在线观看| 91丨porny丨探花| 视频在线观看一区| 一级 黄 色 片一| 99re这里都是精品| 国产真人真事毛片视频| 亚洲激情中文1区| 久久精品视频5| 777色狠狠一区二区三区| 欧美一区二区三区激情| 国产一区二区三区在线| 欧美xxxx黑人又粗又长| 国产精品老女人精品视频| 久久视频免费| 欧美一区二区视频在线| 午夜国产精品视频免费体验区| 欧美色图另类小说| 国产一区二区在线视频| 国产精品无码永久免费不卡| 亚洲日本欧美天堂| 久久精品视频1| 日韩欧美国产成人一区二区| av中文字幕一区二区三区| 97免费在线视频| 亚洲精品大全| 欧美精品v日韩精品v国产精品| 91精品蜜臀一区二区三区在线| 国产性xxxx18免费观看视频| 国产剧情在线观看一区二区| 精品成人av一区二区三区| 亚洲在线观看免费视频| 亚洲天堂一二三| 亚洲一区二区福利| 九色porny丨国产首页在线| 2014国产精品| 日韩欧美一区二区三区在线视频| 欧美激情视频免费看| 国产乱子伦一区二区三区国色天香| 亚洲第一香蕉网| 午夜精品久久久久久久久久久| 国产精品伊人久久| 在线观看国产精品淫| 中文字幕乱码在线播放| 超碰97在线资源| 欧美成人69av| 三级av免费观看| 久久综合九色欧美综合狠狠| 日韩激情在线播放| 日韩欧美国产综合一区 | 好吊视频一二三区| 久久精品在线视频| 成人一级视频| 日韩精品一区二区三区四区五区 | 国产永久精品大片wwwapp| 99在线精品免费视频| 福利一区福利二区| 免费麻豆国产一区二区三区四区| 6080亚洲精品一区二区| 在线激情网站| 国产日韩在线看片| 欧美国产一区二区三区激情无套| 亚洲精品一二三四五区| 久久精品夜色噜噜亚洲a∨| 精品免费囯产一区二区三区| 日韩大陆欧美高清视频区| freexxx性亚洲精品| 国产精品日韩高清| 在线亚洲国产精品网站| 鲁大师私人影院在线观看| 韩曰欧美视频免费观看| 三级国产在线观看| 日本一区二区在线播放| 国产影视一区| 国产无色aaa| 亚洲乱码国产乱码精品精98午夜 | 日韩在线播放视频| 不卡的国产精品| 老司机激情视频| 成人免费毛片片v| 免费观看一区二区三区毛片| 日韩精品在线视频美女| 欧美xxxx做受欧美护士| 色一情一乱一伦一区二区三区丨| 青草av.久久免费一区| 日韩国产第一页| 精品免费视频一区二区| 亚洲深夜视频| 手机看片福利永久国产日韩| 久久91精品久久久久久秒播| 日韩女优一区二区| 亚洲国产精品一区二区久| 欧美福利在线播放| 宅男噜噜99国产精品观看免费| 国产老女人精品毛片久久| 日韩三级一区二区三区| 国产亚洲aⅴaaaaaa毛片| 国产精品视频一区二区三区综合 | 视频在线观看一区| 天海翼在线视频| 亚洲第一网站男人都懂| 亚洲国产欧美日本视频| 亚洲日本欧美在线| 成人精品小蝌蚪| 中文亚洲av片在线观看| 美日韩精品视频免费看| 网友自拍区视频精品| 亚洲欧美自拍另类日韩| 亚洲综合999| 激情在线视频| 97在线中文字幕| 日一区二区三区| 欧美成人aaa片一区国产精品| 亚洲精品按摩视频| 日韩精品一级毛片在线播放| 给我免费播放片在线观看| 久久久www免费人成精品| 国产伦一区二区| 日本高清不卡在线| 中文字幕乱码亚洲无线精品一区| 欧美深性狂猛ⅹxxx深喉| 欧美日韩成人综合| 亚洲免费福利| 激情五月六月婷婷| 国产精品高潮久久久久无| 午夜影院免费视频| 亚洲伊人久久大香线蕉av|