{"id":197,"date":"2024-09-12T09:46:17","date_gmt":"2024-09-12T02:46:17","guid":{"rendered":"https:\/\/gotutorial.org\/?page_id=197"},"modified":"2024-09-12T15:01:41","modified_gmt":"2024-09-12T08:01:41","slug":"go-naming-conventions","status":"publish","type":"page","link":"https:\/\/www.gotutorial.org\/go-tutorial\/go-naming-conventions\/","title":{"rendered":"Go Naming Conventions"},"content":{"rendered":"\n<p>Go naming conventions allow writing clear, concise, and consistent code. Here are some guidelines:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">File Names<\/h2>\n\n\n\n<p>File names should be in lowercase and should contain underscores. For example <code>main.go<\/code>, <code>server.go<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Package Names<\/h2>\n\n\n\n<p>Package names should be short, lowercase, and without underscores or mixed caps. Typically, package names are single words. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">package<\/span> io<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Variable names<\/h2>\n\n\n\n<p>Use <code>camelCase<\/code> for private <a href=\"https:\/\/gotutorial.org\/go-tutorial\/go-variables\/\">variables<\/a> and functions:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">var<\/span> total <span class=\"hljs-keyword\">float64<\/span> = <span class=\"hljs-number\">0<\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">calculateTotal<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">int<\/span><\/span> {\n   <span class=\"hljs-comment\">\/\/ function body<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Use <code>PascalCase<\/code> for exported (public) variables and functions. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">var<\/span> Area <span class=\"hljs-keyword\">float64<\/span> = <span class=\"hljs-number\">0.0<\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">CalculateCircleArea<\/span><span class=\"hljs-params\">(radius <span class=\"hljs-keyword\">float64<\/span>)<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n   <span class=\"hljs-comment\">\/\/ function body<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Constants <\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <code>camelCase<\/code> for unexported <a href=\"https:\/\/gotutorial.org\/go-tutorial\/go-constants\/\">constants<\/a>, for example, <code>taxRate<\/code> and <code>PascalCase<\/code> for exported constants such as <code>TaxRate<\/code><\/li>\n\n\n\n<li>Prefer all uppercase with underscores for constant groups.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Types<\/h2>\n\n\n\n<p>Use <code>PascalCase<\/code> for type names such as <code>Customer<\/code> and <code>BankAccount<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Structs<\/h2>\n\n\n\n<p>Use <code>PascalCase<\/code> for exported structs and <code>camelCase<\/code> for private structs. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">type<\/span> Person <span class=\"hljs-keyword\">struct<\/span> {\n\tFirstName <span class=\"hljs-keyword\">string<\/span>\n\tLastName  <span class=\"hljs-keyword\">string<\/span>\n\tAge       <span class=\"hljs-keyword\">int<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Similarly, use <code>PascalCase<\/code> for exported fields and <code>camelCase<\/code> for private fields.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Methods<\/h2>\n\n\n\n<p>Use the receiver&#8217;s type name (or its first letter) as the method receiver name. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(p Person)<\/span> <span class=\"hljs-title\">GetFullName<\/span> <span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">string<\/span><\/span> {\n\t<span class=\"hljs-keyword\">return<\/span> p.FirstName + <span class=\"hljs-string\">\" \"<\/span> + p.LastName\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Interfaces<\/h2>\n\n\n\n<p>Name interfaces based on the behavior they describe, usually ending in <code>-er<\/code>. For example: <code>FileReader<\/code>, <code>Parser<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">interface<\/span> Formater {\n\tGetFullName() <span class=\"hljs-keyword\">string<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Acronyms<\/h2>\n\n\n\n<p>Capitalize acronyms consistently. For example: <code>HTTP<\/code>, <code>URL<\/code>, <code>JSON<\/code> should be <code>HttpRequest<\/code>, <code>UrlParser<\/code>, <code>JsonEncoder<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Package-Level Variables<\/h2>\n\n\n\n<p>Avoid using package-level variables whenever possible.<\/p>\n\n\n\n<p>When necessary, use descriptive names in <code>camelCase<\/code> or <code>PascalCase<\/code> depending on the export status. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">var<\/span> defaultTimeout = <span class=\"hljs-number\">5<\/span> * time.Second \n<span class=\"hljs-keyword\">var<\/span> DefaultTimeout = <span class=\"hljs-number\">5<\/span> * time.Second<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><div class=\"helpful-block-content\" data-title=\"\">\n\t<div class=\"wth-question\">Was this tutorial helpful?<\/div>\n\t<div class=\"wth-thumbs\">\n\t\t<button\n\t\t\tdata-post=\"197\"\n\t\t\tdata-post-url=\"https:\/\/www.gotutorial.org\/go-tutorial\/go-naming-conventions\/\"\n\t\t\tdata-post-title=\"Go Naming Conventions\"\n\t\t\tdata-response=\"1\"\n\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t><\/path>\n\t\t\t<\/svg>\n\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t<\/button>\n\n\t\t<button\n\t\t\tdata-response=\"0\"\n\t\t\tdata-post=\"197\"\n\t\t\tdata-post-url=\"https:\/\/www.gotutorial.org\/go-tutorial\/go-naming-conventions\/\"\n\t\t\tdata-post-title=\"Go Naming Conventions\"\n\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t><\/path>\n\t\t\t<\/svg>\n\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t<\/button>\n\t<\/div>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\t\t\t<input type=\"button\" name=\"wth-submit\" class=\"wth-btn wth-btn-submit\" id=\"wth-submit\" \/>\n\t\t\t<input type=\"button\" class=\"wth-btn wth-btn-cancel\" value=\"Cancel\" \/>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Go naming conventions allow writing clear, concise, and consistent code. Here are some guidelines: File Names File names should be in lowercase and should contain underscores. For example main.go, server.go. Package Names Package names should be short, lowercase, and without underscores or mixed caps. Typically, package names are single words. For example: Variable names Use [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":10,"menu_order":32,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-197","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages\/197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/comments?post=197"}],"version-history":[{"count":8,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages\/197\/revisions"}],"predecessor-version":[{"id":209,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages\/197\/revisions\/209"}],"up":[{"embeddable":true,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages\/10"}],"wp:attachment":[{"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/media?parent=197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}