{"id":68521,"date":"2024-07-07T21:35:54","date_gmt":"2024-07-07T18:05:54","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/backend-project-structure-go-dev-community\/"},"modified":"2024-07-07T21:35:54","modified_gmt":"2024-07-07T18:05:54","slug":"backend-project-structure-go-dev-community","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/backend-project-structure-go-dev-community\/","title":{"rendered":"Backend Project Structure Go &#8211; DEV Community"},"content":{"rendered":"<p><\/p>\n<div data-article-id=\"1914731\" id=\"article-body\">\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgua11oo3vn1wsvjuas7d.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"311\" height=\"162\" title=\"\"><\/p>\n<p>\u0633\u0644\u0627\u0645 \u0628\u0647 \u0647\u0645\u0647\u060c \u0627\u0645\u0631\u0648\u0632 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 Go \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u0645 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u0645 \u0648 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0645\u062a\u0648\u0633\u0637 \u200b\u200b\u0648 \u06a9\u0648\u0686\u06a9 \u0648 \u062d\u062a\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a.  \u0646\u062d\u0648\u0647 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u067e\u0648\u0634\u0647 \u0647\u0627 \u0648 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0645\u0634\u0627\u0628\u0647 \u0633\u0627\u06cc\u0631 \u0632\u0628\u0627\u0646 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u0627\u0646\u0646\u062f NodeJS \u06cc\u0627 \u062c\u0627\u0648\u0627 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0628\u0647 \u0647\u0645\u0647 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u062f\u0631\u06a9 \u062c\u0627\u0645\u0639\u200c\u062a\u0631 \u0648 \u0622\u0633\u0627\u0646\u200c\u062a\u0631\u06cc \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 Go \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.  \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0645\u0641\u06cc\u062f \u0628\u0627\u0634\u062f \u0648 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 Go \u0645\u0646 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>.\n\u251c\u2500\u2500 cmd\/               # Contains executable applications\n\u2502   \u251c\u2500\u2500 cli\/           # Command-line application\n\u2502   \u251c\u2500\u2500 cronjob\/       # Scheduled jobs\n\u2502   \u2514\u2500\u2500 server\/        # Server application\n\u2502      \u2514\u2500\u2500 main.go     # Run the application\n\u251c\u2500\u2500 config\/            # Configuration for applications\n\u2502   \u2514\u2500\u2500 config.yaml    # Main configuration file\n\u251c\u2500\u2500 docs\/              # Project documentation\n\u251c\u2500\u2500 global\/            # Global variables\n\u251c\u2500\u2500 internal\/          # Internal packages\n\u2502   \u251c\u2500\u2500 controller\/    # Handle client requests\n\u2502   \u251c\u2500\u2500 initialize\/    # Initialize necessary components\n\u2502   \u251c\u2500\u2500 middlewares\/   # Server middlewares\n\u2502   \u251c\u2500\u2500 models\/        # Structs representing data\n\u2502   \u251c\u2500\u2500 repo\/          # Query data from the database\n\u2502   \u251c\u2500\u2500 routers\/       # Define routes for the server\n\u2502   \u251c\u2500\u2500 service\/       # Handle business logic\n\u251c\u2500\u2500 migrations\/        # Database migration scripts\n\u251c\u2500\u2500 pkg\/               # Reusable packages\n\u2502   \u251c\u2500\u2500 logger\/        # Logging for the application\n\u2502   \u251c\u2500\u2500 response\/      # Handle response to the client\n\u2502   \u251c\u2500\u2500 setting\/       # Application settings\n\u2502   \u2514\u2500\u2500 utils\/         # Utility functions\n\u251c\u2500\u2500 scripts\/           # Development support scripts\n\u251c\u2500\u2500 tests\/             # Test cases for the application\n\u251c\u2500\u2500 third_party\/       # Third-party libraries\n\u251c\u2500\u2500 .gitignore         # Git ignore file\n\u251c\u2500\u2500 go.mod             # Go dependencies management\n\u251c\u2500\u2500 go.sum             # Contains checksums of dependencies\n\u251c\u2500\u2500 LICENSE            # Project license\n\u2514\u2500\u2500 README.md          # Project description\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0646\u062a\u06cc\u062c\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0645\u0646 \u062f\u0631 Visual Studio Code \u0627\u0633\u062a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiy4pomil0qm4dcv87n8q.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"371\" height=\"685\" title=\"\"><\/p>\n<p><strong>\u0627\u06af\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0645\u0641\u06cc\u062f \u0648 \u062c\u0627\u0644\u0628 \u0628\u0648\u062f\u060c \u0644\u0637\u0641\u0627\u064b \u0622\u0646 \u0631\u0627 \u0628\u0627 \u062f\u0648\u0633\u062a\u0627\u0646 \u0648 \u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u062e\u0648\u062f \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f.  \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0628\u0627\u0634\u062f.  \u0628\u0627 \u062a\u0634\u06a9\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646<\/strong> \ud83d\ude4f<\/p>\n<p>\u0628\u06cc\u0627 \u0648\u0635\u0644 \u0628\u0634\u06cc\u0645  \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0633\u0644\u0627\u0645 \u0628\u0647 \u0647\u0645\u0647\u060c \u0627\u0645\u0631\u0648\u0632 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 Go \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u0645 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u0645 \u0648 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0645\u062a\u0648\u0633\u0637 \u200b\u200b\u0648 \u06a9\u0648\u0686\u06a9 \u0648 \u062d\u062a\u06cc \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a. \u0646\u062d\u0648\u0647 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u067e\u0648\u0634\u0647 \u0647\u0627 \u0648 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0645\u0634\u0627\u0628\u0647 \u0633\u0627\u06cc\u0631 \u0632\u0628\u0627\u0646 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u0627\u0646\u0646\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":68522,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media.dev.to\/cdn-cgi\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphqzerxb86do479py8cm.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-68521","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/68521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=68521"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/68521\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/68522"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=68521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=68521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=68521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}