最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

創(chuàng)建Go工程化項目布局詳解

 更新時間:2022年09月26日 14:26:49   作者:范閑  
這篇文章主要介紹了創(chuàng)建Go工程化項目布局詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

如果你嘗試學習Go,或者你正在為自己建立一個Poc或者一個玩具項目,這個項目布局是沒有啥必要的,從一些簡單的事情開始(一個main文件綽綽有余)。當有更多的人參與這個項目的時候,你講需要更多的結(jié)構(gòu),包括需要一個tookit來方便生成項目的模板,盡可能大家統(tǒng)一的工程目錄布局

本文章圍繞github.com/golang-stan… 進行說明

/cmd

本項目的主干。 每個應(yīng)用程序的目錄名應(yīng)該與你想要的可執(zhí)行文件的名稱相匹配(例如:/cmd/myapp)

不要在這個項目中放置太多的代碼,如果你認為代碼導入并在其他項目中使用,那么他應(yīng)該位于/pkg目錄中,如果代碼不是可重用的,或者你不希望其他人重用他,請將該代碼放到/internal目錄中。

/internal

不希望對外進行共享的代碼,internal目錄中也可以放置一些子包結(jié)構(gòu),已做到更加細化的切分,如:

|--internal
|   |
|   |--demo
|       |--biz
|       |--data
|       |--service

/pkg

外部應(yīng)用程序可以使用的代碼庫,(例如:/pkg/publiclib)其他項目會導入這些代碼庫,所以放入到該目錄下的代碼要三思~注意:/internal目錄是確保私有包不可導入的私有方法,因為他是由Go在編譯時強制執(zhí)行的。/pkg 仍然是一種更好的方式,可以顯示的表示目錄中的代碼對于其他人來說是安全使用的好方法。

/pkg目錄內(nèi)可以參考GO標準庫的組織形式,按照功能分類,/internal/pkg一般用于項目內(nèi)的,跨多個應(yīng)用的公共共享代碼,但是其作用域僅在單個工程內(nèi)。

|--pkg
|  |
|  |--cache
|  |   |--memcache
|  |   |--redis
|  |
|  |--conf
|      |--dsn
|      |--env
|      |--flagvar
|      |--paladin

/docs,/example,/pkg,/third_parth,/tools

這些跟上文說的/pkg/internal都同屬根目錄下的目錄結(jié)構(gòu)

  • /docs 放置一些項目說明文檔
  • /example 放置一些項目的使用示例
  • /thrid_parth 三方的一些依賴文件,如:idl文件
  • /tools 放置一些項目的腳手架工具,代碼生成工具等

基礎(chǔ)庫項目布局

每個公司都應(yīng)該為不同的微服務(wù)建立一個統(tǒng)一的kit基礎(chǔ)包工具集。 基礎(chǔ)庫tookit為一個獨立的項目,公司級建議只有一個,按照功能來拆分會帶來不少的管理工作,因此建議并整合

kit包應(yīng)該具備的特點

  • 統(tǒng)一
  • 標準庫方式布局
  • 高度抽象
  • 支持插件

例如下面的布局

|--cache
|    |--memcache
|         |--test
|    |--redis
|         |--test
|--conf
|    |--dsn
|    |--env 
|    |--flagvar
|    |--paladin
|          |--apollo
|               |--internal
|                     |--mockserver
|--container
|    |--group
|    |--pool
|    |--queue
|         |--aqm
|--database
|    |--hbase
|    |--sql
|    |--tidb
|--echo
|    |--types
|--log
|    |--internal
|         |--core
|         |--filewriter
|

應(yīng)用程序項目布局

/api

API協(xié)議定義目錄, xxapi.proto protobuf文件以及生成go的文件,我們通常把api文檔定義在proto 文件中描述

/configs

配置文件模板或者默認配置

/test

額外的外部測試應(yīng)用程序和測試數(shù)據(jù),你可以隨時根據(jù)需求構(gòu)造測試目錄,對于較大的項目,有一個數(shù)據(jù)子目錄是有意義的,例如你可以使用/test/testdata(如果你需要忽略目錄中的內(nèi)容)請注意,Go還會以“.”或者“_”開頭的目錄或者文件,因此在如何命名測試數(shù)據(jù)目錄方便,有著很大的靈活性。

不應(yīng)該包含/src目錄

有些Go項目確實有src目錄,這是因為開發(fā)人員通常有Java的開發(fā)背景。

/internal

/biz

業(yè)務(wù)邏輯的組裝層,類似DDD中的domain,

/data

業(yè)務(wù)數(shù)據(jù)訪問,包含cache和db等封裝,實現(xiàn)了biz的repo接口,我們可能會把data和dao混合在一起,data偏重業(yè)務(wù)的含義,他所做的是將領(lǐng)域?qū)ο笾匦履贸鰜恚覀內(nèi)サ袅薉DD的infra層,

/service

實現(xiàn)了api定義的服務(wù)層,類似DDD的applocation層,處理DTO到biz領(lǐng)域?qū)嶓w的轉(zhuǎn)換,(DTO->DO)同事協(xié)同個類biz交互,但是不應(yīng)該處理復雜邏輯

布局示意圖

|--api
|--configs
|--test
|--internal
|       |--biz
|       |--data
|       |--service

數(shù)據(jù)流向

以上就是創(chuàng)建Go工程化項目布局詳解的詳細內(nèi)容,更多關(guān)于Go工程化項目布局的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go?錯誤處理實踐總結(jié)示例

    Go?錯誤處理實踐總結(jié)示例

    這篇文章主要為大家介紹了Go錯誤處理實踐的總結(jié)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Go語言字符串及strings和strconv包使用實例

    Go語言字符串及strings和strconv包使用實例

    字符串是工作中最常用的,值得我們專門的練習一下,下面這篇文章主要給大家介紹了關(guān)于Go語言字符串及strings和strconv包使用的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Golang內(nèi)存泄漏詳解之原因、檢測與修復過程

    Golang內(nèi)存泄漏詳解之原因、檢測與修復過程

    本文詳細介紹了Golang中的內(nèi)存泄漏問題,包括內(nèi)存泄漏的定義、分類、影響以及預防和修復方法,通過使用Golang自帶的性能分析工具和火焰圖工具,可以有效地檢測和定位內(nèi)存泄漏的代碼路徑,合理的代碼設(shè)計和定期的代碼審查也是預防內(nèi)存泄漏的關(guān)鍵
    2024-12-12
  • Golang使用Gin框架實現(xiàn)HTTP響應(yīng)格式統(tǒng)一處理

    Golang使用Gin框架實現(xiàn)HTTP響應(yīng)格式統(tǒng)一處理

    在gin框架中,我們可以定義一個中間件來處理統(tǒng)一的HTTP響應(yīng)格式,本文主要為大家介紹了具體是怎么定義實現(xiàn)這樣的中間件的,感興趣的小伙伴可以了解一下
    2023-07-07
  • golang語言如何將interface轉(zhuǎn)為int, string,slice,struct等類型

    golang語言如何將interface轉(zhuǎn)為int, string,slice,struct等類型

    這篇文章主要介紹了golang語言如何將interface轉(zhuǎn)為int, string,slice,struct等類型,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • golang常見接口限流算法的實現(xiàn)

    golang常見接口限流算法的實現(xiàn)

    本文主要介紹了golang常見接口限流算法的實現(xiàn),包含固定窗口、滑動窗口、漏桶和令牌桶,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • 在?Go?語言中使用?regexp?包處理正則表達式的操作

    在?Go?語言中使用?regexp?包處理正則表達式的操作

    正則表達式是處理字符串時一個非常強大的工具,而?Go?語言的?regexp?包提供了簡單而強大的接口來使用正則表達式,本文將介紹如何在?Go?中使用?regexp?包來編譯和執(zhí)行正則表達式,以及如何從文本中匹配和提取信息,感興趣的朋友一起看看吧
    2023-12-12
  • Go語言框架快速集成限流中間件詳解

    Go語言框架快速集成限流中間件詳解

    這篇文章主要為大家介紹了Go語言框架快速集成限流中間件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Go語言:打造優(yōu)雅數(shù)據(jù)庫單元測試的實戰(zhàn)指南

    Go語言:打造優(yōu)雅數(shù)據(jù)庫單元測試的實戰(zhàn)指南

    Go語言數(shù)據(jù)庫單元測試入門:聚焦高效、可靠的數(shù)據(jù)庫代碼驗證!想要確保您的Go應(yīng)用數(shù)據(jù)層堅如磐石嗎?本指南將手把手教您如何利用Go進行數(shù)據(jù)庫單元測試,輕松揪出隱藏的bug,打造無懈可擊的數(shù)據(jù)處理邏輯,一起來探索吧!
    2024-01-01
  • Golang學習筆記(一):簡介

    Golang學習筆記(一):簡介

    這篇文章主要介紹了Golang學習筆記(一):簡介,本文講解了Go語言最主要的特性、安裝、環(huán)境變量設(shè)置、整體目錄結(jié)構(gòu)、Helloworld、go命令、調(diào)試、編輯器設(shè)置等內(nèi)容,需要的朋友可以參考下
    2015-05-05

最新評論

合江县| 萨嘎县| 安宁市| 定襄县| 西平县| 天长市| 马边| 镇安县| 天气| 克拉玛依市| 越西县| 加查县| 突泉县| 涞水县| 永平县| 林州市| 嘉祥县| 清远市| 堆龙德庆县| 赫章县| 安平县| 汉阴县| 舞阳县| 普安县| 泸定县| 汪清县| 泾川县| 黔江区| 淮南市| 上栗县| 河南省| 巴彦淖尔市| 巴东县| 阜新市| 大方县| 平舆县| 资讯 | 西吉县| 乐至县| 碌曲县| 嘉荫县|