{"version":3,"sources":["webpack:///./src/assets/images/tree_solution_package_application_2.png","webpack:///./src/assets/images/package_storage.png","webpack:///./src/assets/images/tree_go_program_example.png","webpack:///./src/views/Chap11PackagesAndImports.vue?94d1","webpack:///src/views/Chap11PackagesAndImports.vue","webpack:///./src/views/Chap11PackagesAndImports.vue?72ed","webpack:///./src/views/Chap11PackagesAndImports.vue","webpack:///./src/assets/images/source_file.png","webpack:///./src/assets/images/internal_directory.png","webpack:///./src/assets/images/go_program_package.png","webpack:///./src/assets/images/folder_solution_package_app_2.png"],"names":["module","exports","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","directives","name","rawName","pre","staticRenderFns","components","FeedbackInvite","BuyCopyInvite","NewsletterInput","ChapterHeading","ChapterBibliography","TOCChapter","NavBar","BIconLink45deg","Footer","created","window","data","publicPath","metaInfo","title","htmlAttrs","lang","meta","charset","content","property","link","rel","href","component"],"mappings":"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","file":"js/chunk-675da618.312093cc.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/tree_solution_package_application_2.28246ab9.png\";","module.exports = __webpack_public_path__ + \"img/package_storage.f7358f82.png\";","module.exports = __webpack_public_path__ + \"img/tree_go_program_example.a3426c1b.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NavBar'),_c('div',{staticClass:\"container-fluid\"},[_c('b-row',[_c('TOCChapter',{attrs:{\"chapter-id\":\"Chap11PackagesAndImports\"}}),_c('b-col'),_c('b-col',{attrs:{\"role\":\"main\",\"md\":\"6\"}},[_c('ChapterHeading',{attrs:{\"chapter-title\":\"Chapter 11: Packages and imports\",\"image-name\":\"package-imports.jpg\",\"image-alt\":\"Packages and imports\"}}),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"what-will-you-learn-in-this-chapter\"}}),_c('h1',{attrs:{\"data-number\":\"1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"1\")]),_vm._v(\" What will you learn in this chapter? \"),_c('a',{attrs:{\"href\":\"#what-will-you-learn-in-this-chapter\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('ul',[_c('li',[_c('p',[_vm._v(\"What is a package?\")])]),_c('li',[_c('p',[_vm._v(\"How are source files grouped?\")])]),_c('li',[_c('p',[_vm._v(\"Where to store the main.go file?\")])]),_c('li',[_c('p',[_vm._v(\"How to organize your Go project?\")])]),_c('li',[_c('p',[_vm._v(\"What is the import path? What are import declarations?\")])]),_c('li',[_c('p',[_vm._v(\"What is the go.mod file?\")])]),_c('li',[_c('p',[_vm._v(\"What is modular programming?\")])]),_c('li',[_c('p',[_vm._v(\"How to build modular applications with Go?\")])]),_c('li',[_c('p',[_vm._v(\"What is the internal directory, and why use it?\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"technical-concepts-covered\"}}),_c('h1',{attrs:{\"data-number\":\"2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"2\")]),_vm._v(\" Technical concepts covered \"),_c('a',{attrs:{\"href\":\"#technical-concepts-covered\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('ul',[_c('li',[_c('p',[_vm._v(\"package\")])]),_c('li',[_c('p',[_vm._v(\"source file\")])]),_c('li',[_c('p',[_vm._v(\"import\")])]),_c('li',[_c('p',[_vm._v(\"module\")])]),_c('li',[_c('p',[_vm._v(\"modular programming\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"program-package-source-files\"}}),_c('h1',{attrs:{\"data-number\":\"3\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"3\")]),_vm._v(\" Program, package, source files \"),_c('a',{attrs:{\"href\":\"#program-package-source-files\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"A Go program is a combination of packages (see figure \"),_c('a',{attrs:{\"href\":\"#fig:A-Go-program\",\"data-reference-type\":\"ref\",\"data-reference\":\"fig:A-Go-program\"}},[_vm._v(\"1\")]),_vm._v(\").\")]),_c('figure',[_c('b-img',{staticClass:\"img-book\",attrs:{\"src\":require('@/assets/images/go_program_package.png'),\"alt\":\"A Go program[fig:A-Go-program]\",\"fluid\":\"\",\"thumbnail\":\"\"}}),_c('figcaption',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"A Go program\"),_c('span',{attrs:{\"id\":\"fig:A-Go-program\",\"label\":\"fig:A-Go-program\"}},[_vm._v(\"[fig:A-Go-program]\")])])],1),_c('p',[_vm._v(\"A package is composed of one or more \"),_c('strong',[_vm._v(\"source files\")]),_vm._v(\". Into those source files, the Go programmer declares :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"constant\")])]),_c('li',[_c('p',[_vm._v(\"variables\")])]),_c('li',[_c('p',[_vm._v(\"functions\")])]),_c('li',[_c('p',[_vm._v(\"types and methods\")])])]),_c('p',[_vm._v(\"The package main is \"),_c('strong',[_vm._v(\"often\")]),_vm._v(\" composed of an individual file. The function \"),_c('strong',[_vm._v(\"main\")]),_vm._v(\" is the \"),_c('strong',[_vm._v(\"program entry point\")]),_vm._v(\". In a Go program, you will also find a file named \"),_c('strong',[_vm._v(\"go.mod.\")]),_vm._v(\" The following sections will detail all those components.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"source-files\"}}),_c('BuyCopyInvite'),_c('h1',{attrs:{\"data-number\":\"4\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"4\")]),_vm._v(\" &Source files \"),_c('a',{attrs:{\"href\":\"#source-files\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"In the figure \"),_c('a',{attrs:{\"href\":\"#fig:A-source-file\",\"data-reference-type\":\"ref\",\"data-reference\":\"fig:A-source-file\"}},[_vm._v(\"2\")]),_vm._v(\" you can see a schematic version of a source file. We will detail each part of the source file.\")]),_c('figure',[_c('b-img',{staticClass:\"img-book\",attrs:{\"src\":require('@/assets/images/source_file.png'),\"alt\":\"A source file[fig:A-source-file]\",\"fluid\":\"\",\"thumbnail\":\"\"}}),_c('figcaption',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"A source file\"),_c('span',{attrs:{\"id\":\"fig:A-source-file\",\"label\":\"fig:A-source-file\"}},[_vm._v(\"[fig:A-source-file]\")])])],1),_c('p',[_vm._v(\"The following snippet is an example of a source file that belongs to a package\"),_c('strong',[_vm._v(\"occupancy :\")])]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/occupancy/occupancy.go\\npackage occupancy\\n\\nconst highLimit = 70.0\\nconst mediumLimit = 20.0\\n\\n// retrieve occupancyLevel from an occupancyRate\\n// From 0% to 30% occupancy rate return Low\\n// From 30% to 60% occupancy rate return Medium\\n// From 60% to 100% occupancy rate return High\\nfunc level(occupancyRate float32) string {\\n if occupancyRate > highLimit {\\n return \\\"High\\\"\\n } else if occupancyRate > mediumLimit {\\n return \\\"Medium\\\"\\n } else {\\n return \\\"Low\\\"\\n }\\n}\\n\\n// compute the hotel occupancy rate\\n// return a percentage\\n// ex : 14,43 => 14,43%\\nfunc rate(roomsOccupied int, totalRooms int) float32 {\\n return (float32(roomsOccupied) / float32(totalRooms)) * 100\\n}\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"package-clause\"}}),_c('h2',{attrs:{\"data-number\":\"4.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"4.1\")]),_vm._v(\" Package clause \"),_c('a',{attrs:{\"href\":\"#package-clause\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"At the top of the source file, we find the \"),_c('strong',[_vm._v(\"package clause\")]),_vm._v(\" in our example, it’s :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"package occupancy\")])]),_c('p',[_vm._v(\"The \"),_c('strong',[_vm._v(\"package clause\")]),_vm._v(\" is the first line of each source file. It defines the name of the current package.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"imports-declaration\"}}),_c('h2',{attrs:{\"data-number\":\"4.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"4.2\")]),_vm._v(\" Imports declaration \"),_c('a',{attrs:{\"href\":\"#imports-declaration\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Then the \"),_c('strong',[_vm._v(\"set of imports declarations.\")]),_vm._v(\"In this section of the source file, we define all the other packages that we want to use in this package. The package occupancy does not import other packages. Let’s take another example: here is a source file from the package \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"room\")])]),_vm._v(\" :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/import-declaration/room/room.go\\npackage room\\n\\nimport \\\"fmt\\\"\\n\\n// display information about a room\\nfunc printDetails(roomNumber, size, nights int) {\\n fmt.Println(roomNumber, \\\":\\\", size, \\\"people /\\\", nights, \\\" nights \\\")\\n}\\n\\nimport \\\"fmt\\\"\")])]),_c('p',[_vm._v(\"Here we import one package :\")]),_c('ul',[_c('li',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"fmt\")])]),_vm._v(\" wich is part of the standard library\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"source-code\"}}),_c('h2',{attrs:{\"data-number\":\"4.3\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"4.3\")]),_vm._v(\" Source code \"),_c('a',{attrs:{\"href\":\"#source-code\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"After the imports declarations, we find the most important part, the source code of the package. This is where you can declare variables, constants, functions, types, and methods.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"file-organization\"}}),_c('h1',{attrs:{\"data-number\":\"5\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"5\")]),_vm._v(\" File organization \"),_c('a',{attrs:{\"href\":\"#file-organization\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"We must group the source files of a package into a single directory. The directory must have the same name as the package. For instance, the source files of the \"),_c('strong',[_vm._v(\"baz\")]),_vm._v(\" package must be stored into the \"),_c('strong',[_vm._v(\"baz\")]),_vm._v(\" folder (see figure \"),_c('a',{attrs:{\"href\":\"#fig:Location-of-package's\",\"data-reference-type\":\"ref\",\"data-reference\":\"fig:Location-of-package's\"}},[_vm._v(\"3\")]),_vm._v(\" )\")]),_c('p',[_c('b-img',{staticClass:\"img-book\",attrs:{\"src\":require('@/assets/images/package_storage.png'),\"alt\":\"Location of package’s source files[[fig:Location-of-package's]]{#fig:Location-of-package’s label=“fig:Location-of-package’s”}\",\"fluid\":\"\",\"thumbnail\":\"\"}}),_vm._v(\"{#fig:Location-of-package’s width=“80%”}\")],1),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-main-package\"}}),_c('h1',{attrs:{\"data-number\":\"6\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"6\")]),_vm._v(\" The main package \"),_c('a',{attrs:{\"href\":\"#the-main-package\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"A Go program starts by initializing the \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"main\")])]),_vm._v(\" package and then run the function \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"main\")])]),_vm._v(\" from that package. The main package is where your program starts doing what it was built to do.\")]),_c('p',[_vm._v(\"Here is an example of a main package :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/main-package/main.go\\npackage main\\n\\nimport \\\"fmt\\\"\\n\\nfunc init() {\\n fmt.Println(\\\"launch initialization\\\")\\n}\\n\\nfunc main() {\\n fmt.Println(\\\"launch the program !\\\")\\n}\")])]),_c('p',[_vm._v(\"This program has an \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"init\")])]),_vm._v(\" function. This function can hold all the initialization tasks necessary for your program to run correctly (for more information about it, refers to the dedicated chapter).\")]),_c('p',[_vm._v(\"The program also defines a \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"main\")])]),_vm._v(\" function. Both functions do not have a return type (unlike C, where the main function must return an integer).\")]),_c('p',[_vm._v(\"The \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"main\")])]),_vm._v(\" function will be executed after all the initialization tasks have been performed. In this function, you usually call other packages and implement your program logic.\")]),_c('p',[_vm._v(\"The previous program output :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"launch initialization\\nlaunch the program!\")])]),_c('p',[_vm._v(\"The \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"init\")])]),_vm._v(\" function is launched, then the main function.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"one-main-package-per-project\"}}),_c('h4',{attrs:{\"data-number\":\"6.0.0.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"6.0.0.1\")]),_vm._v(\" One main package per project? \"),_c('a',{attrs:{\"href\":\"#one-main-package-per-project\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"This is not always the case, but a project can have several main packages and thus several main functions. Usually, different main packages are present in large projects. Here are some common examples :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"A main package for launching the web server of the application\")])]),_c('li',[_c('p',[_vm._v(\"Another main package to run scheduled database maintenance\")])]),_c('li',[_c('p',[_vm._v(\"Another one that has been developed for a specific punctual intervention...\")])])]),_c('p',[_vm._v(\"For instance, the Kubernetes (one of the most starred Go projects) holds at the time of speaking 20 main packages.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"should-i-name-the-file-that-holds-my-main-package-main.go\"}}),_c('h4',{attrs:{\"data-number\":\"6.0.0.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"6.0.0.2\")]),_vm._v(\" Should I name the file that holds my main package main.go? \"),_c('a',{attrs:{\"href\":\"#should-i-name-the-file-that-holds-my-main-package-main.go\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"No, it’s not an obligation. You can do that if you have just one main function in your project. But often, it’s good practice to give it an informational name.\")]),_c('p',[_vm._v(\"For instance, in the project Kubernetes you can find the following files that are holding a main package :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"check_cli_conventions.go\")])]),_c('li',[_c('p',[_vm._v(\"gen_kubectl_docs.go\")])])]),_c('p',[_vm._v(\"We can infer what the program does just by looking at its name: the first one will check that CLI conventions are respected, the second one will generate docs.\")]),_c('p',[_vm._v(\"Please follow this convention. It allows other developers to understand what the program does by looking at the file tree.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"our-main-packages-stored-in-a-specific-directory\"}}),_c('h4',{attrs:{\"data-number\":\"6.0.0.3\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"6.0.0.3\")]),_vm._v(\" Our main packages stored in a specific directory \"),_c('a',{attrs:{\"href\":\"#our-main-packages-stored-in-a-specific-directory\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Again nothing is written in the Go specification about the folder that should contain the main package. There is still a strong usage main packages should live inside a \"),_c('strong',[_vm._v(\"cmd/\")]),_vm._v(\" folder at the root of the repository.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-go.mod-file\"}}),_c('h1',{attrs:{\"data-number\":\"7\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"7\")]),_vm._v(\" The go.mod file \"),_c('a',{attrs:{\"href\":\"#the-go.mod-file\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Here is an example of a go.mod file :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"module maximilien-andile.com/myProg\\n\\ngo 1.13\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"module-path\"}}),_c('h2',{attrs:{\"data-number\":\"7.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"7.1\")]),_vm._v(\" Module path \"),_c('a',{attrs:{\"href\":\"#module-path\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"The first line is composed of the word \"),_c('strong',[_vm._v(\"module\")]),_vm._v(\" followed by the\"),_c('u',[_vm._v(\"module path\")]),_vm._v(\".\")]),_c('p',[_vm._v(\"We introduce here the notion of \"),_c('strong',[_vm._v(\"module\")]),_vm._v(\". They have not always existed in Go; they have been introduced around March 2019. We will detail what modules are and how to use them in another section. For the moment, remember that a module is “a collection of Go packages stored in a file tree with a go.mod file at its root”\"),_c('a',{staticClass:\"footnote-ref\",attrs:{\"href\":\"#fn1\",\"id\":\"fnref1\",\"role\":\"doc-noteref\"}},[_c('sup',[_vm._v(\"1\")])]),_vm._v(\". When we add a package main to a module, we make it a program that can be compiled and executed.\")]),_c('p',[_vm._v(\"We need to define a module path for our module (our program). The path is the unique location of the module. Here are some examples of paths for two famous Go programs.\")]),_c('ul',[_c('li',[_vm._v(\"Hashicorp Vault,\"),_c('a',{staticClass:\"footnote-ref\",attrs:{\"href\":\"#fn2\",\"id\":\"fnref2\",\"role\":\"doc-noteref\"}},[_c('sup',[_vm._v(\"2\")])]),_vm._v(\" :\")])]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"module github.com/hashicorp/vault\")])]),_c('ul',[_c('li',[_vm._v(\"Kubernetes,\"),_c('a',{staticClass:\"footnote-ref\",attrs:{\"href\":\"#fn3\",\"id\":\"fnref3\",\"role\":\"doc-noteref\"}},[_c('sup',[_vm._v(\"3\")])]),_vm._v(\":\")])]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"module k8s.io/kubernetes\")])]),_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"\\\"github.com/hashicorp/vault\\\"\")])]),_vm._v(\" is an URL to a Github repository. A Github repository is a folder that contains the source code of a project. This folder can be publicly accessible (i.e., by anyone who has the link) or private. In the latter case, the code is only accessible to authorized developers. If you have access to a repository that has a go.mod inside, you can import it in your project. We will see later how that works.\")]),_c('p',[_vm._v(\"Note that your program will not be automatically shared or exposed by Go if you choose a remote path! For testing purpose, you can choose a path that is not an URL :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"module thisIsATest\\n\\ngo 1.13\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"expected-go-version\"}}),_c('h2',{attrs:{\"data-number\":\"7.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"7.2\")]),_vm._v(\" Expected Go version \"),_c('a',{attrs:{\"href\":\"#expected-go-version\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"The next line of the go.mod file declares Go’s expected version. In this program, version 1.13 of go is expected. By setting it, we say to other developers that our project has been developed with this specific version of Go. In 10 years, Go will evolve, and some stuff that we use now in our program will probably not exists anymore. Programmers from the future will know how to compile it.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"an-example-program\"}}),_c('BuyCopyInvite'),_c('h1',{attrs:{\"data-number\":\"8\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"8\")]),_vm._v(\" An example program \"),_c('a',{attrs:{\"href\":\"#an-example-program\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('figure',[_c('b-img',{staticClass:\"img-book\",attrs:{\"src\":require('@/assets/images/tree_go_program_example.png'),\"alt\":\"Example of a go program folder/file organization[fig:Go-program-example]\",\"fluid\":\"\",\"thumbnail\":\"\"}}),_c('figcaption',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"Example of a go program folder/file organization\"),_c('span',{attrs:{\"id\":\"fig:Go-program-example\",\"label\":\"fig:Go-program-example\"}},[_vm._v(\"[fig:Go-program-example]\")])])],1),_c('p',[_vm._v(\"The program is composed of 2 directories (in bold) :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"occupancy\")])]),_c('li',[_c('p',[_vm._v(\"room\")])])]),_c('p',[_vm._v(\"Each directory is composed of a go file. The file has the name of the directory. Each folder represents a package.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"room.go\"}}),_c('h4',{attrs:{\"data-number\":\"8.0.0.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"8.0.0.1\")]),_vm._v(\" room.go \"),_c('a',{attrs:{\"href\":\"#room.go\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"package room\\n\\nconst roomText = \\\"%d : %d people / %d nights\\\"\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"occupancy.go\"}}),_c('h4',{attrs:{\"data-number\":\"8.0.0.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"8.0.0.2\")]),_vm._v(\" occupancy.go \"),_c('a',{attrs:{\"href\":\"#occupancy.go\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"package occupancy\\n\\nconst highLimit = 70.0\")])]),_c('p',[_vm._v(\"At the root directory of the program folder, we can find the \"),_c('strong',[_vm._v(\"go.mod\")]),_vm._v(\" file with the \"),_c('strong',[_vm._v(\"main.go\")]),_vm._v(\" file.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"go.mod\"}}),_c('h4',{attrs:{\"data-number\":\"8.0.0.3\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"8.0.0.3\")]),_vm._v(\" go.mod \"),_c('a',{attrs:{\"href\":\"#go.mod\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"module thisIsATest\\n\\ngo 1.13\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"main.go-the-entry-point\"}}),_c('h4',{attrs:{\"data-number\":\"8.0.0.4\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"8.0.0.4\")]),_vm._v(\" main.go (the entry point) \"),_c('a',{attrs:{\"href\":\"#main.go-the-entry-point\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"package main\\n\\nimport \\\"fmt\\\"\\n\\nfunc main() {\\n fmt.Println(\\\"program started\\\")\\n}\")])]),_c('p',[_vm._v(\"Let’s try to build it and execute it :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"$ go build main.go\\n$ ./main\\nprogram started\")])]),_c('p',[_vm._v(\"The program does nothing except that it outputs the string “program started”. In each of the two packages, we defined a constant. Those two constants are never used.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"practical-application-1\"}}),_c('h1',{attrs:{\"data-number\":\"9\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"9\")]),_vm._v(\" Practical application 1 \"),_c('a',{attrs:{\"href\":\"#practical-application-1\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"problem\"}}),_c('h2',{attrs:{\"data-number\":\"9.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"9.1\")]),_vm._v(\" Problem \"),_c('a',{attrs:{\"href\":\"#problem\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Add a package named \"),_c('strong',[_vm._v(\"booking\")]),_vm._v(\" to the previous Go program. In this package :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Define a constant named \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"vatRate\")])]),_vm._v(\" with the value 20.0\")])]),_c('li',[_c('p',[_vm._v(\"Define a function named \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"printVatRate\")])]),_vm._v(\" that will print to the standard output the constant \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"vatRate\")])]),_vm._v(\" followed by the percentage sign.\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"solution\"}}),_c('h2',{attrs:{\"data-number\":\"9.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"9.2\")]),_vm._v(\" Solution \"),_c('a',{attrs:{\"href\":\"#solution\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"A package is composed of a directory and at least one source file. If we want to create a package \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"booking\")])]),_vm._v(\" we should :\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"Create a directory named “booking”\")])]),_c('li',[_c('p',[_vm._v(\"Create a file into this directory. The name of the file will be \"),_c('strong',[_vm._v(\"booking.go\")])])])]),_c('p',[_vm._v(\"Here is the source file booking.go :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/application-add-package/booking/booking.go\\npackage booking\\n\\nimport \\\"fmt\\\"\\n\\nconst vatRate = 20.0\\n\\nfunc printVatRate() {\\n fmt.Printf(\\\"%.2f %%\\\", vatRate)\\n}\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"modular-programming\"}}),_c('h1',{attrs:{\"data-number\":\"10\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"10\")]),_vm._v(\" Modular programming \"),_c('a',{attrs:{\"href\":\"#modular-programming\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"We can define a program in a single main.go file. This is what we did before. It’s legal; your code will compile. It’s legal, but it’s not the best solution. To understand why we need to take define the concept of “modular programming”.\")]),_c('p',[_vm._v(\"Those questions are not new to software engineering and have been asked by many programmers before. During the sixties, software developers were struggling to maintain code bases. Softwares were designed into a single monolith with intensive usage of GOTO statements \"),_c('b-link',{staticClass:\"citation\",attrs:{\"data-cites\":\"davis2011understanding\",\"href\":\"#davis2011understanding\"}},[_vm._v(\"[@davis2011understanding]\")]),_vm._v(\". The codebase of some projects became hard to understand due to this design.\")],1),_c('p',[_vm._v(\"The community needed a better way to develop. This was the beginning of the reflection on modular programming.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"what-is-a-module\"}}),_c('h2',{attrs:{\"data-number\":\"10.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"10.1\")]),_vm._v(\" What is a module? \"),_c('a',{attrs:{\"href\":\"#what-is-a-module\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"To define a module, we will use Gauthier’s standard definition.\"),_c('b-link',{staticClass:\"citation\",attrs:{\"data-cites\":\"gauthier1970designing\",\"href\":\"#gauthier1970designing\"}},[_vm._v(\"[@gauthier1970designing]\")]),_vm._v(\". A module is a chunk of code that :\")],1),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"Performs a specific task\")])]),_c('li',[_c('p',[_vm._v(\"With inputs and outputs well defined\")])]),_c('li',[_c('p',[_vm._v(\"That can be tested independently\")])])]),_c('p',[_vm._v(\"A large project that requires to perform several tasks can be split into different tasks, each one living inside a module with a well-defined API (2) and that can be tested independently from other systems.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"expected-benefits-of-modular-programming\"}}),_c('h2',{attrs:{\"data-number\":\"10.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"10.2\")]),_vm._v(\" Expected benefits of modular programming \"),_c('a',{attrs:{\"href\":\"#expected-benefits-of-modular-programming\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"We can identify three main benefits \"),_c('b-link',{staticClass:\"citation\",attrs:{\"data-cites\":\"parnas1972criteria\",\"href\":\"#parnas1972criteria\"}},[_vm._v(\"[@parnas1972criteria]\")]),_vm._v(\":\")],1),_c('p',[_vm._v(\"If you build your systems by using modules, you can make your team work on different modules independently, it increases the expected \"),_c('strong',[_vm._v(\"productivity\")]),_vm._v(\" of the team members. For instance, you are positioning two developers on module A and two others on module B. The two groups will not block each other if you have clearly defined the API of the two modules. Modules can also be implemented by others even if they are not finished yet.\")]),_c('p',[_vm._v(\"Modules increase the \"),_c('strong',[_vm._v(\"flexibility\")]),_vm._v(\" of development. You can ship isolated features into modules without having to do heavy changes on the existing code base of your system.\")]),_c('p',[_vm._v(\"Developers can easily understand code organized in modules. A large system with a lot of structures, interfaces, and files is hard to understand. Joining a project that has thousands of files is hard. A system composed of modules requires less energy to be understood, modules can be studied iteratively. Modularity facilitates the system \"),_c('strong',[_vm._v(\"comprehension\")]),_vm._v(\" by developers (especially newcomers to the team)\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"how-to-decompose-a-program-into-modules\"}}),_c('h2',{attrs:{\"data-number\":\"10.3\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"10.3\")]),_vm._v(\" How to decompose a program into modules \"),_c('a',{attrs:{\"href\":\"#how-to-decompose-a-program-into-modules\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Decomposition of a system into modules can be difficult. There is no unique answer to this issue. Here is some advice that is based on experience and my readings :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Do not create a module for every single task of a system; you will end up with too many modules with a size that is too small.\")])]),_c('li',[_c('p',[_vm._v(\"Instead, create modules that group functionalities that are \"),_c('strong',[_vm._v(\"close\")]),_vm._v(\", for instance, a module for handling the database queries, a module to handle logging.\")])]),_c('li',[_c('p',[_vm._v(\"Inside your modules, the code is usually \"),_c('strong',[_vm._v(\"tightly coupled\")]),_vm._v(\", meaning that the different parts of your module are strongly linked.\")])]),_c('li',[_c('p',[_vm._v(\"Between two modules, you should enforce \"),_c('strong',[_vm._v(\"loose coupling\")]),_vm._v(\". Each module is treated as a component, and each component do not need another component to work. Modules should be independent. It allows you to replace one module with another one without touching the other modules.\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"modular-programming-go-modules-go-packages\"}}),_c('h1',{attrs:{\"data-number\":\"11\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"11\")]),_vm._v(\" Modular programming / Go modules / Go packages \"),_c('a',{attrs:{\"href\":\"#modular-programming-go-modules-go-packages\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"We introduced three notions :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Modular programming\")])]),_c('li',[_c('p',[_vm._v(\"Go packages\")])]),_c('li',[_c('p',[_vm._v(\"Go modules\")])])]),_c('p',[_vm._v(\"Those three notions are linked together. Modular programming is a way of writing programs. The developer should create testable chunks of codes that perform specific tasks with a well-defined output and output. This “method” can be applied in C, Java, C++, Go...\")]),_c('ul',[_c('li',[_c('p',[_c('strong',[_vm._v(\"Go packages\")]),_vm._v(\" are a tool that you can use to write \"),_c('strong',[_vm._v(\"modular programs\")]),_vm._v(\". In a Go package :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"We can group source files with functions (or methods) related to a particular functionality :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Ex: a package booking that will handle bookings for the hotel: create a booking, confirm a booking, cancel a booking...\")])]),_c('li',[_c('p',[_vm._v(\"Ex: a package room that will group functions related to hotel rooms: display the room information, check its current occupancy...\")])])])]),_c('li',[_c('p',[_vm._v(\"We can write tests that we can run independently of the rest of the code. (we will see how to do it in the unit test chapter)\")])])])]),_c('li',[_c('p',[_c('strong',[_vm._v(\"Go modules\")]),_vm._v(\" are a way of grouping packages together to form an application or a library.\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"package-naming-convention\"}}),_c('BuyCopyInvite'),_c('h1',{attrs:{\"data-number\":\"12\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"12\")]),_vm._v(\" Package naming convention \"),_c('a',{attrs:{\"href\":\"#package-naming-convention\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Finding a good name for a package is important. Other developers will use the package name in their source code, as a consequence, it must be informative but also shorts. A lot of blog articles have been written about this subject. In this section, I will give you some hints to choose your package name wisely :\")]),_c('div',{staticClass:\"list\"},[_c('p',[_vm._v(\"The name you choose must be small. In my opinion, no more than ten letters is a good length. Take an example from the standard library. Package names are very shot, often composed of a single word.\")]),_c('p',[_vm._v(\"The name has to bring essential information with it. A good test is to ask somebody what your package does without showing him the source code. A bad answer should make you think a second time about the name.\")]),_c('p',[_vm._v(\"Package names can be written in snake case (my_name) nothing in the specification is written about it, but the usage among the Go community is to use camel case (myPackageName)\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-uniqueness-of-package-names\"}}),_c('h4',{attrs:{\"data-number\":\"12.0.0.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"12.0.0.1\")]),_vm._v(\" The uniqueness of package names \"),_c('a',{attrs:{\"href\":\"#the-uniqueness-of-package-names\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Such small names often disconcert beginners because they fear from potential name collisions. The risk of collision exists but not at the level of the package name :\")]),_c('ul',[_c('li',[_vm._v(\"The import path \"),_c('strong',[_vm._v(\"AND\")]),_vm._v(\" the package name must be unique.\")])]),_c('p',[_vm._v(\"Another developer might have taken foo as a package name does not prevent me from choosing it because my package has not the same import path.\")]),_c('ul',[_c('li',[_vm._v(\"Note that if someone has the same import path as you and the same package name, you can still compile your program\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"linking-package-together-a-trial-and-error-approach.\"}}),_c('h1',{attrs:{\"data-number\":\"13\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"13\")]),_vm._v(\" Linking package together: a trial and error approach. \"),_c('a',{attrs:{\"href\":\"#linking-package-together-a-trial-and-error-approach.\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"In the previous chapter, all the code we produced was in the main package. We know how to create new packages that will contain functions, variables, constants... How to use functions from the package room into the package main?\")]),_c('p',[_vm._v(\"Here is our package room :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/trial-error/room/room.go\\npackage room\\n\\nimport \\\"fmt\\\"\\n\\n// display information about a room\\nfunc printDetails(roomNumber, size, nights int) {\\n fmt.Println(roomNumber, \\\":\\\", size, \\\"people /\\\", nights, \\\" nights \\\")\\n}\")])]),_c('p',[_vm._v(\"How to call the function \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"printDetails\")])]),_vm._v(\" in the package main (our program’s entry point)? Let’s try to call the function directly :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/trial-error/main.go\\npackage main\\n\\nfunc main() {\\n printDetails(112, 3, 2)\\n}\")])]),_c('p',[_vm._v(\"If we compile this program, we got this error :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"./main.go:4:2: undefined: printDetails\")])]),_c('p',[_vm._v(\"The function \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"printDetails\")])]),_vm._v(\", which we try to call, is not defined in the package main. However, the function is defined in the package room. We want to import the package room into the package main. To allow the import to work, we need to say that our program is a Go module.\")]),_c('p',[_vm._v(\"To do that, we need to create a go.mod file at the root of our project :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"module thisIsATest2\\n\\ngo 1.13\")])]),_c('p',[_vm._v(\"The module path is set to \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"thisIsATest2\")])]),_vm._v(\". You can choose another one\")]),_c('p',[_vm._v(\"Then we can import the room package into our main function :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/trial-error-2/main.go\\npackage main\\n\\nimport \\\"thisIsATest2/room\\\"\\n\\nfunc main() {\\n printDetails(112, 3, 2)\\n}\")])]),_c('p',[_vm._v(\"Let’s try to build our program. We got an error message :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"./main.go:3:8: imported and not used: \\\"thisIsATest2/room\\\"\\n./main.go:6:2: undefined: printDetails\")])]),_c('p',[_vm._v(\"This error says that :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"We import a package without using it.\")])]),_c('li',[_c('p',[_vm._v(\"The function \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"printDetails\")])]),_vm._v(\" is still not defined.\")])])]),_c('p',[_vm._v(\"Go has no clue that we want to use the \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"printDetails\")])]),_vm._v(\" from the room package. To inform it, we can use this notation :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"room.printDetails(112, 3, 2)\")])]),_c('p',[_vm._v(\"It means : “call the function \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"printDetails\")])]),_vm._v(\" from package room”. Let’s try it :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/trial-error-3/main.go\\npackage main\\n\\nimport \\\"thisIsATest2/room\\\"\\n\\nfunc main() {\\n room.printDetails(112, 3, 2)\\n}\")])]),_c('p',[_vm._v(\"If we compile, we got another error :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"./main.go:6:2: cannot refer to unexported name room.printDetails\\n./main.go:6:2: undefined: room.printDetails\")])]),_c('p',[_vm._v(\"It gives us an indication: we are unable to call the function because it’s unexported... We need to export the function to make it visible to others! To do that in Go, you have to use a capital letter on the first letter of the function.\")]),_c('p',[_vm._v(\"This is the new version of the room package source file :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// room/room.go\\npackage room\\n\\nimport \\\"fmt\\\"\\n\\n// display information about a room\\nfunc PrintDetails(roomNumber, size, nights int) {\\n fmt.Println(roomNumber, \\\":\\\", size, \\\"people /\\\", nights, \\\" nights \\\")\\n}\")])]),_c('p',[_c('u',[_vm._v(\"printDetails\")]),_vm._v(\" has been renamed to \"),_c('strong',[_c('u',[_vm._v(\"P\")])]),_c('u',[_vm._v(\"rintDetails.\")])]),_c('p',[_vm._v(\"And this is our main function :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/trial-error-4/main.go\\npackage main\\n\\nimport \\\"thisIsATest2/room\\\"\\n\\nfunc main() {\\n room.PrintDetails(112, 3, 2)\\n}\")])]),_c('p',[_vm._v(\"The function call has been changed to reflect the new name of the method (\"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"room.PrintDetails\")])]),_vm._v(\"). Now we can launch the compilation of the program :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"$ go build main.go\")])]),_c('p',[_vm._v(\"And the execution :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"$ ./main\\n112 : 3 people / 2 nights\")])]),_c('p',[_vm._v(\"Hooray ! it works. We have used an exported function from another package into the main package.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"key-takeaways\"}}),_c('h2',{attrs:{\"data-number\":\"13.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"13.1\")]),_vm._v(\" Key Takeaways \"),_c('a',{attrs:{\"href\":\"#key-takeaways\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('ul',[_c('li',[_c('p',[_vm._v(\"A function, a variable, and a constant if \"),_c('strong',[_vm._v(\"not exported\")]),_vm._v(\" is \"),_c('strong',[_vm._v(\"private\")]),_vm._v(\" to the package where it is defined\")])]),_c('li',[_c('p',[_vm._v(\"To \"),_c('strong',[_vm._v(\"export something\")]),_vm._v(\" just transform the first letter of its identifier to a \"),_c('strong',[_vm._v(\"capital\")]),_vm._v(\" letter\")])])]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/package-example/price/price.go\\npackage price\\n\\n// this function is not exported\\n// we cannot use it in another package\\nfunc compute(){\\n //\\n}\\n\\n// this function is exported\\n// it can be used in another package\\nfunc Update(){\\n //...\\n}\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"vocabulary-precisions\"}}),_c('h2',{attrs:{\"data-number\":\"13.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"13.2\")]),_vm._v(\" Vocabulary precisions \"),_c('a',{attrs:{\"href\":\"#vocabulary-precisions\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('ul',[_c('li',[_c('p',[_vm._v(\"You might hear from other developers use the term \"),_c('strong',[_vm._v(\"public\")]),_vm._v(\" or \"),_c('strong',[_vm._v(\"private\")]),_vm._v(\". Those terms are equivalent to exported / unexported. Other languages use them to refer to the same thing. This is not the official Go terminology.\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Example usage: “Mmm, why did you make this function \"),_c('strong',[_vm._v(\"public\")]),_vm._v(\", it’s not even used outside your package?”\")])]),_c('li',[_c('p',[_vm._v(\"Example usage: “Bob, you should consider making this method \"),_c('strong',[_vm._v(\"private\")]),_vm._v(\"”\")])])])]),_c('li',[_c('p',[_vm._v(\"The term “visibility” refers to the exported/unexported quality of a method.\")]),_c('ul',[_c('li',[_vm._v(\"Example usage: “What is the visibility of this constant? It’s \"),_c('strong',[_vm._v(\"private\")]),_vm._v(\"”\")])])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"import-path-import-declaration\"}}),_c('h1',{attrs:{\"data-number\":\"14\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14\")]),_vm._v(\" Import Path & Import declaration \"),_c('a',{attrs:{\"href\":\"#import-path-import-declaration\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"To import a package into another package, you need to know its import path. We will see how to determine it in the first section.\")]),_c('p',[_vm._v(\"When you know the import path, you have to write an import declaration. This is the object of the next section.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"import-path\"}}),_c('h2',{attrs:{\"data-number\":\"14.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.1\")]),_vm._v(\" Import path \"),_c('a',{attrs:{\"href\":\"#import-path\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"The Go specifications do not strictly specify the import path. The import path is a string that must uniquely identify a module among all the existing modules. The build system will use them to fetch the source code of your imported packages and build your program. Today the Go build system (which code live in the package \"),_c('strong',[_vm._v(\"go/build\")]),_vm._v(\" rely on different types of path :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Standard library path\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"The source files that we will use to build your program are located by default in \"),_c('strong',[_vm._v(\"/usr/local/go/src\")]),_vm._v(\" (for Linux and Mac users) and in \"),_c('strong',[_vm._v(\"C:\\\\Go\\\\src\")]),_vm._v(\" for windows users\")]),_c('ul',[_c('li',[_c('u',[_vm._v(\"Example\")]),_vm._v(\" : \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"fmt\")])]),_vm._v(\", \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"time\")])]),_vm._v(\" ...\")])])])])]),_c('li',[_c('p',[_vm._v(\"URL that points to a code-sharing website.\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Go has out-of-the-box support for the following code-sharing websites that use Git as a version control system (VCS): Github, Gitlab, Bitbucket.\")])]),_c('li',[_c('p',[_vm._v(\"The URL can be exposed on the internet (for instance, an open-source project hosted on Github)\")]),_c('ul',[_c('li',[_c('u',[_vm._v(\"Example\")]),_vm._v(\" : \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"gitlab.com/loir402/foo\")])])])])]),_c('li',[_c('p',[_vm._v(\"It can also be only exposed in your local/company network\")]),_c('ul',[_c('li',[_c('u',[_vm._v(\"Example\")]),_vm._v(\" : \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"acme-corp.company.gitlab.com/loir402/foo\")])])])])])])]),_c('li',[_c('p',[_vm._v(\"Local path or relative path\")]),_c('ul',[_c('li',[_vm._v(\"When Go has introduced modules, this type of import path is no longer the norm, even if the Go build system supports it.\")])])])]),_c('p',[_vm._v(\"When downloading the package go will check the type of VCS system used in the HTTP response (inside a meta tag). If it’s not provided, you should add to the import path the type of VCS system used. Here is an example from Go official documentation:\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"example.org/repo.git/foo/bar\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"what-is-a-vcs-what-is-git-github-gitlab\"}}),_c('h2',{attrs:{\"data-number\":\"14.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.2\")]),_vm._v(\" What is a VCS? What is Git, Github, Gitlab? \"),_c('a',{attrs:{\"href\":\"#what-is-a-vcs-what-is-git-github-gitlab\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"VCS means Version Control System; it is a program that is designed to keep track of changes operated on source files of a project. VCS systems also have features that allow several developers to work on the same program simultaneously without annoying each other.\")]),_c('p',[_vm._v(\"There are several VCS programs available on the market :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Git\")])]),_c('li',[_c('p',[_vm._v(\"Mercurial\")])]),_c('li',[_c('p',[_vm._v(\"Bazaar\")])]),_c('li',[_c('p',[_vm._v(\".…\"),_c('a',{staticClass:\"footnote-ref\",attrs:{\"href\":\"#fn4\",\"id\":\"fnref4\",\"role\":\"doc-noteref\"}},[_c('sup',[_vm._v(\"4\")])])])])]),_c('p',[_vm._v(\"Git is Open source. It is very famous, and it is widely used today. (In my professional experience, I only used Git).\")]),_c('ul',[_c('li',[_vm._v(\"It was created in 2005 by Linus Torvalds\"),_c('a',{staticClass:\"footnote-ref\",attrs:{\"href\":\"#fn5\",\"id\":\"fnref5\",\"role\":\"doc-noteref\"}},[_c('sup',[_vm._v(\"5\")])]),_vm._v(\".\")])]),_c('p',[_vm._v(\"It’s a program that you can use on the terminal, but also using a graphical interface.\")]),_c('p',[_vm._v(\"The changes to the source code of Go are managed using Git.\")]),_c('p',[_vm._v(\"Git is a \"),_c('strong',[_vm._v(\"distributed VCS.\")]),_vm._v(\" Individual developers will fetch a copy of the source code by creating a “local repository”. When a developer is happy with its changes, he can push them to a remote repository.\")]),_c('ul',[_c('li',[_c('p',[_c('strong',[_vm._v(\"Github, Gitlab, Bitbucket\")]),_vm._v(\" : are websites that allow developers to host source code by initializing repositories hosted on their servers.\")])]),_c('li',[_c('p',[_vm._v(\"Those websites offer other features, but code hosting is their base activity.\")])])]),_c('p',[_vm._v(\"Those websites are a great way to show and share your work with others. They are also the basic block of the open-source community. I strongly advise you to create a profile on that website to show what you can do and help others.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"how-to-download-code-from-distant-packages\"}}),_c('h2',{attrs:{\"data-number\":\"14.3\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.3\")]),_vm._v(\" How to download code from distant packages \"),_c('a',{attrs:{\"href\":\"#how-to-download-code-from-distant-packages\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"To download a package, you will use the \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"go get\")])]),_vm._v(\" command inside your terminal.\")]),_c('p',[_vm._v(\"For instance, if you want to import the code from https://github.com/graphql-go/graphql, open a terminal, and type :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"go get github.com/graphql-go/graphql\")])]),_c('p',[_vm._v(\"We will cover this in details in the chapter dedicated to the dependency management system.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"import-declaration\"}}),_c('h2',{attrs:{\"data-number\":\"14.4\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.4\")]),_vm._v(\" Import declaration \"),_c('a',{attrs:{\"href\":\"#import-declaration\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"An import declaration declares that we will use some external code in the current package.\")]),_c('p',[_vm._v(\"An import declaration can have different forms :\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"standard-import\"}}),_c('h5',{attrs:{\"data-number\":\"14.4.0.0.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.4.0.0.1\")]),_vm._v(\" Standard import \"),_c('a',{attrs:{\"href\":\"#standard-import\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"import \\\"gitlab.com/loir402/foo\\\"\")])]),_c('p',[_vm._v(\"Then in the file, you can access the exported element of the imported package with the syntax :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"foo.MyFunction()\")])]),_c('p',[_vm._v(\"Here we use the function MyFunction from the foo package.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"multiple-package-import\"}}),_c('h5',{attrs:{\"data-number\":\"14.4.0.0.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.4.0.0.2\")]),_vm._v(\" Multiple package import \"),_c('a',{attrs:{\"href\":\"#multiple-package-import\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"You rarely have just one import. Often you have several packages to import :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"import (\\n \\\"fmt\\\"\\n \\\"maximilien-andile.com/application2/foo\\\"\\n \\\"maximilien-andile.com/application2/bar\\\"\\n)\")])]),_c('p',[_vm._v(\"Here we import three packages. Here are their import paths :\")]),_c('ul',[_c('li',[_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"fmt\")])])])]),_c('li',[_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"maximilien-andile.com/application2/foo\")])])])]),_c('li',[_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"maximilien-andile.com/application2/bar\")])])])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"import-with-an-explicit-package-name-alias\"}}),_c('h5',{attrs:{\"data-number\":\"14.4.0.0.3\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.4.0.0.3\")]),_vm._v(\" Import with an explicit package name (alias) \"),_c('a',{attrs:{\"href\":\"#import-with-an-explicit-package-name-alias\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"You can also give your package an alias (a sort of surname for the package) to call its exported elements with this alias. For instance :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"import bar \\\"gitlab.com/loir402/foo\\\"\")])]),_c('p',[_vm._v(\"Here we say that the package has the surname \"),_c('strong',[_vm._v(\"bar\")]),_vm._v(\". You can use the exported types, functions, variables, and constants of the package foo (which import path is “gitlab.com/loir402”) with the qualifier \"),_c('strong',[_vm._v(\"bar\")]),_vm._v(\" like this :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"bar.MyFunction()\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"import-with-a-dot\"}}),_c('h5',{attrs:{\"data-number\":\"14.4.0.0.4\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.4.0.0.4\")]),_vm._v(\" Import with a dot \"),_c('a',{attrs:{\"href\":\"#import-with-a-dot\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"import .\\\"gitlab.com/loir402/foo\\\"\")])]),_c('p',[_vm._v(\"With this syntax, all the functions, types, variables, and constants will be declared in the current package. As a consequence, all the exported identifiers of the package can be used without any qualifier. I do not recommend using this because it can become confusing.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-blank-import\"}}),_c('h5',{attrs:{\"data-number\":\"14.4.0.0.5\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"14.4.0.0.5\")]),_vm._v(\" The blank import \"),_c('a',{attrs:{\"href\":\"#the-blank-import\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"With a blank import, just the package’s init function will be called. A blank import can be specified with the following syntax :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"import _ \\\"gitlab.com/loir402/foo\\\"\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-internal-directory\"}}),_c('h1',{attrs:{\"data-number\":\"15\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"15\")]),_vm._v(\" The internal directory \"),_c('a',{attrs:{\"href\":\"#the-internal-directory\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"When you create a package and when your program is available on a code-sharing site (like Github, Gitlab ...), other developers will be able to use your package.\")]),_c('p',[_vm._v(\"This is a great responsibility for you. Other programs will rely on your code. It means that when you change a function or the name of an Exported identifier, other code might break.\")]),_c('p',[_vm._v(\"To forbid the import of packages, you can put them into a directory called “internal”.\")]),_c('figure',[_c('b-img',{staticClass:\"img-book\",attrs:{\"src\":require('@/assets/images/internal_directory.png'),\"alt\":\"Example usage of the internal directory\",\"fluid\":\"\",\"thumbnail\":\"\"}}),_c('figcaption',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"Example usage of the internal directory\")])],1),_c('p',[_vm._v(\"In the figure, you can see an example directory structure with an internal directory :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"cmd/main.go contain the main package and the main function\")])]),_c('li',[_c('p',[_vm._v(\"internal/booking is the directory of the package booking.\")])]),_c('li',[_c('p',[_vm._v(\"internal/booking/booking.go is a source file of the package booking.\")])]),_c('li',[_c('p',[_vm._v(\"Any exported identifiers inside the booking package are accessible into the current program (ie. we can call a function from booking package into package main)\")])]),_c('li',[_c('p',[_vm._v(\"BUT, other developers will not be able to use it in their program.\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"practical-application-2-refactor-source-code\"}}),_c('BuyCopyInvite'),_c('h1',{attrs:{\"data-number\":\"16\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16\")]),_vm._v(\" Practical application 2: refactor source code \"),_c('a',{attrs:{\"href\":\"#practical-application-2-refactor-source-code\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"problem-1\"}}),_c('h2',{attrs:{\"data-number\":\"16.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16.1\")]),_vm._v(\" Problem \"),_c('a',{attrs:{\"href\":\"#problem-1\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"One of your colleagues has created a program composed of a unique main.go file :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/application-refactor/problem/main.go\\npackage main\\n\\nimport \\\"fmt\\\"\\n\\nfunc main() {\\n\\n // first reservation\\n customerName := \\\"Doe\\\"\\n customerEmail := \\\"john.doe@example.com\\\"\\n var nights uint = 12\\n emailContents := getEmailContents(\\\"M\\\", customerName, nights)\\n sendEmail(emailContents, customerEmail)\\n createAndSaveInvoice(customerName, nights, 145.32)\\n}\\n\\n// send an email\\nfunc sendEmail(contents string, to string) {\\n // ...\\n // ...\\n}\\n\\n// prepare email template\\nfunc getEmailContents(title string, name string, nights uint) string {\\n text := \\\"Dear %s %s,\\\\n your room reservation for %d night(s) is confirmed. Have a nice day !\\\"\\n return fmt.Sprintf(text,\\n title,\\n name,\\n nights)\\n}\\n\\n// create the invoice for the reservation\\nfunc createAndSaveInvoice(name string, nights uint, price float32) {\\n // ...\\n}\")])]),_c('p',[_vm._v(\"You are asked to refactor the code to improve its maintainability. Propose a new code organization :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Which packages should you create?\")])]),_c('li',[_c('p',[_vm._v(\"Should you create new directories?\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"solution-1\"}}),_c('h2',{attrs:{\"data-number\":\"16.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16.2\")]),_vm._v(\" Solution \"),_c('a',{attrs:{\"href\":\"#solution-1\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-go.mod-file-1\"}}),_c('h3',{attrs:{\"data-number\":\"16.2.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16.2.1\")]),_vm._v(\" The go.mod file \"),_c('a',{attrs:{\"href\":\"#the-go.mod-file-1\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"The initial task is to create a new directory and create a go.mod file. You can do that manually, but let me show you how to do it with your terminal :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"$ mkdir application2Test\\n$ go mod init maximilien-andile.com/packages/application2\\ngo: creating new go.mod: module maximilien-andile.com/packages/application2\")])]),_c('p',[_vm._v(\"This command will initialize automatically the go.mod file :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"module maximilien-andile.com/packages/application2\\n\\ngo 1.13\")])]),_c('p',[_vm._v(\"The module path is set to “maximilien-andile.com/packages/application2”. You can choose whatever you want.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"which-packages-to-create\"}}),_c('h3',{attrs:{\"data-number\":\"16.2.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16.2.2\")]),_vm._v(\" Which packages to create? \"),_c('a',{attrs:{\"href\":\"#which-packages-to-create\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"The main package defines three functions :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"sendEmail\")])]),_c('li',[_c('p',[_vm._v(\"getEmailContents\")])]),_c('li',[_c('p',[_vm._v(\"createAndSaveInvoice\")])])]),_c('p',[_vm._v(\"Two functions are related to emails. One function related to invoices. We can create one package for emails and one package for invoices. The rule is simple: \"),_c('strong',[_vm._v(\"group into packages constructs that are related to the same theme\")]),_vm._v(\".\")]),_c('p',[_vm._v(\"Let’s find names for our packages :\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"email\")])]),_c('li',[_c('p',[_vm._v(\"invoice\")])])]),_c('p',[_vm._v(\"The name has to remain short informative, and simple. Do not look for complexity; keep it simple and understandable. The next step is to create two directories to hold our source files.\")]),_c('figure',[_c('b-img',{staticClass:\"img-book\",attrs:{\"src\":require('@/assets/images/folder_solution_package_app_2.png'),\"alt\":\"Screenshot of the project folder in a MacOS finder\",\"fluid\":\"\",\"thumbnail\":\"\"}}),_c('figcaption',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"Screenshot of the project folder in a MacOS finder\")])],1),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-email-package\"}}),_c('h3',{attrs:{\"data-number\":\"16.2.3\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16.2.3\")]),_vm._v(\" The email package \"),_c('a',{attrs:{\"href\":\"#the-email-package\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Inside the directory email, we will create a file named email.go :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/application-refactor/solution/email/email.go\\npackage email\\n\\n// send an email\\nfunc Send(contents string, to string) {\\n // ...\\n // ...\\n}\\n\\n// prepare email template\\nfunc Contents(title string, name string, nights uint) string {\\n // ...\\n // TO IMPLEMENT\\n return \\\"\\\"\\n}\")])]),_c('p',[_vm._v(\"Note that we changed the name of the functions.\")]),_c('ul',[_c('li',[_c('p',[_c('u',[_vm._v(\"sendEmail\")]),_vm._v(\" has been replaced with \"),_c('u',[_vm._v(\"Send\")])])]),_c('li',[_c('p',[_c('u',[_vm._v(\"getEmailContents\")]),_vm._v(\" has been replaced with \"),_c('u',[_vm._v(\"Contents\")])])])]),_c('p',[_vm._v(\"The first thing to note is that the two functions are exported. Names have been modified. Because we are in package email, we do not need to call the method SendEmail. Here is two examples call :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// version 1\\nemail.SendEmail(\\\"test\\\",\\\"john.doe@test.com\\\")\\n// version 2\\nemail.Send(\\\"test\\\",\\\"john.doe@test.com\\\")\")])]),_c('p',[_vm._v(\"I hope that you prefer version 2... In version 1, we use the term email twice, which works but is not elegant.\")]),_c('p',[_vm._v(\"We also changed the name of the second function (\"),_c('u',[_vm._v(\"getEmailContents\")]),_vm._v(\"). We changed two things:\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"In other languages, methods that begin with the word “get” are pretty usual. In Go, it’s rare. Why? Because when you look at the function signature, the output is a string. You know that you will get your email contents as a string. Adding the “Get” do not bring more information to the caller. We get rid of it\")])]),_c('li',[_c('p',[_vm._v(\"We deleted the email reference because we are in the mail package. No need to repeat ourselves.\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-invoice-package\"}}),_c('h3',{attrs:{\"data-number\":\"16.2.4\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16.2.4\")]),_vm._v(\" The invoice package \"),_c('a',{attrs:{\"href\":\"#the-invoice-package\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('p',[_vm._v(\"Here is the source code of the invoice package :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/application-refactor/solution/invoice/invoice.go\\npackage invoice\\n\\n// create the invoice for the reservation and\\n// save it to database\\nfunc Create(name string, nights uint, price float32) {\\n // ...\\n}\")])]),_c('p',[_vm._v(\"The function name has been reworked: we export it, and we have removed the reference to invoice in the name. Here is an example of a call to the function \"),_c('u',[_vm._v(\"Create\")]),_vm._v(\" :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"invoice.Create()\")])]),_c('p',[_vm._v(\"If we did not change the name of the function, we could have something like that :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"invoice.CreateInvoice()\")])]),_c('p',[_vm._v(\"This syntax repeats the word \"),_c('u',[_vm._v(\"Invoice\")]),_vm._v(\" unnecessarily.\")]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"the-main-package-1\"}}),_c('h3',{attrs:{\"data-number\":\"16.2.5\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16.2.5\")]),_vm._v(\" The main package \"),_c('a',{attrs:{\"href\":\"#the-main-package-1\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"// package-imports/application-refactor/solution/main.go\\npackage main\\n\\nimport (\\n \\\"maximilien-andile.com/packages/application2/email\\\"\\n \\\"maximilien-andile.com/packages/application2/invoice\\\"\\n)\\n\\nfunc main() {\\n // first reservation\\n customerName := \\\"Doe\\\"\\n customerEmail := \\\"john.doe@example.com\\\"\\n var nights uint = 12\\n emailContents := email.Contents(\\\"M\\\", customerName, nights)\\n email.Send(emailContents, customerEmail)\\n invoice.Create(customerName, nights, 145.32)\\n}\")])]),_c('p',[_vm._v(\"First, note that we import two packages identified by their import path :\")]),_c('ul',[_c('li',[_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"maximilien-andile.com/package/application2/email\")])])])]),_c('li',[_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"maximilien-andile.com/package/application2/invoice\")])])])])]),_c('p',[_vm._v(\"The main function is the entry point of our program. Three variables are defined.\")]),_c('ul',[_c('li',[_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"customerName\")])]),_vm._v(\" (string)\")])]),_c('li',[_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"customerEmail\")])]),_vm._v(\" (string)\")])]),_c('li',[_c('p',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"nights\")])]),_vm._v(\" (unsigned integer)\")])])]),_c('p',[_vm._v(\"Because we exposed the function \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"Contents\")])]),_vm._v(\" and \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"Send\")])]),_vm._v(\", we are free to call them into the main package :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"emailContents := email.Contents(\\\"M\\\", customerName, nights)\\nemail.Send(emailContents, customerEmail)\")])]),_c('p',[_vm._v(\"Then we call the function \"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"Create\")])]),_vm._v(\" (also exposed) :\")]),_c('pre',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\"}},[_vm._v(\"invoice.Create(customerName, nights, 145.32)\")])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"project-tree\"}}),_c('h3',{attrs:{\"data-number\":\"16.2.6\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"16.2.6\")]),_vm._v(\" Project tree \"),_c('a',{attrs:{\"href\":\"#project-tree\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('figure',[_c('b-img',{staticClass:\"img-book\",attrs:{\"src\":require('@/assets/images/tree_solution_package_application_2.png'),\"alt\":\"Application solution project tree\",\"fluid\":\"\",\"thumbnail\":\"\"}}),_c('figcaption',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"Application solution project tree\")])],1),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"test-yourself\"}}),_c('h1',{attrs:{\"data-number\":\"17\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"17\")]),_vm._v(\" Test yourself \"),_c('a',{attrs:{\"href\":\"#test-yourself\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"questions\"}}),_c('h2',{attrs:{\"data-number\":\"17.1\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"17.1\")]),_vm._v(\" Questions \"),_c('a',{attrs:{\"href\":\"#questions\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"When you add this line :\"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"import _ \\\"github.com/go-sql-driver/mysql\\\"\")])]),_vm._v(\" to the import section of your program, what will happen?\")])]),_c('li',[_c('p',[_vm._v(\"What is the syntax to import the package “\"),_c('strong',[_vm._v(\"github.com/PuerkitoBio/goquery\")]),_vm._v(\"” with the alias “\"),_c('strong',[_vm._v(\"goq\")]),_vm._v(\"” ?\")])]),_c('li',[_c('p',[_vm._v(\"How can you share your Go code with others?\")])]),_c('li',[_c('p',[_vm._v(\"How to spot exported identifiers in a package?\")])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"answers\"}}),_c('h2',{attrs:{\"data-number\":\"17.2\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"17.2\")]),_vm._v(\" Answers \"),_c('a',{attrs:{\"href\":\"#answers\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"What the following line does:\"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"import _ \\\"github.com/go-sql-driver/mysql\\\"\")])]),_vm._v(\" ?\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"This is a blank import declaration.\")])]),_c('li',[_c('p',[_vm._v(\"It is said to be blank because of the underscore character\"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"_\")])]),_vm._v(\".\")])]),_c('li',[_c('p',[_vm._v(\"All init functions of the package \"),_c('strong',[_vm._v(\"github.com/go-sql-driver/mysql\")]),_vm._v(\"will be run\")])])])]),_c('li',[_c('p',[_vm._v(\"What is the syntax to import a package with an alias?\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"import goq \\\"github.com/PuerkitoBio/goquery\\\"\")])])])])]),_c('li',[_c('p',[_vm._v(\"How can you share your Go code with others?\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"Create a git repository on a code hosting website (like Github, GitLab, bitbucket ...)\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_vm._v(\"Let say that you created the repository gitlab.com/loir402/foo\")])])]),_c('li',[_c('p',[_vm._v(\"Initialize your module (with\"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"go mod init gitlab.com/loir402/foo\")])]),_vm._v(\")\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_vm._v(\"It will create a go.mod file at your project’s root.\")])])]),_c('li',[_c('p',[_vm._v(\"Push your code to the hosting website.\")])]),_c('li',[_c('p',[_vm._v(\"Share it with your colleagues and friends who will import it.\")])]),_c('li',[_c('p',[_vm._v(\"Note that you can also send your code by email or via physical mail, but it might be not optimal :)\")])])])]),_c('li',[_c('p',[_vm._v(\"How to spot exported identifiers in a package?\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"Their first letter is capitalized\")])]),_c('li',[_c('p',[_vm._v(\"On the contrary unexported identifiers have not a first letter capitalized\")]),_c('ol',{attrs:{\"type\":\"1\"}},[_c('li',[_c('p',[_vm._v(\"ex:\"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"const FontSize = 12\")])]),_vm._v(\" is an exported constant identifier\")])]),_c('li',[_c('p',[_vm._v(\"ex:\"),_c('span',{directives:[{name:\"highlightjs\",rawName:\"v-highlightjs\"}]},[_c('code',{pre:true,attrs:{\"class\":\"go\",\"style\":\"display: inline\"}},[_vm._v(\"const emailLengthLimit = 58\")])]),_vm._v(\" is an unexported constant identifier\")])])])])])])]),_c('div',{staticClass:\"anchor\",attrs:{\"id\":\"key-takeaways-1\"}}),_c('h1',{attrs:{\"data-number\":\"18\"}},[_c('span',{staticClass:\"header-section-number\"},[_vm._v(\"18\")]),_vm._v(\" Key takeaways \"),_c('a',{attrs:{\"href\":\"#key-takeaways-1\"}},[_c('b-icon-link45deg',{staticClass:\"heading-link-icon\",attrs:{\"font-scale\":\"0.7\"}})],1)]),_c('ul',[_c('li',[_c('p',[_vm._v(\"A package is a group of source files that live in the same directory\")])]),_c('li',[_c('p',[_vm._v(\"A name identifies a package\")])]),_c('li',[_c('p',[_vm._v(\"Identifiers with a first letter uppercase are exported.\")])]),_c('li',[_c('p',[_vm._v(\"An exported identifier can be used in any other packages.\")])]),_c('li',[_c('p',[_vm._v(\"Packages that live inside an internal directory can be used inside packages of your module. However, they cannot be used by other modules.\")])]),_c('li',[_c('p',[_vm._v(\"A module is “a collection of Go packages stored in a file tree with a go.mod file at its root”\"),_c('a',{staticClass:\"footnote-ref\",attrs:{\"href\":\"#fn6\",\"id\":\"fnref6\",\"role\":\"doc-noteref\"}},[_c('sup',[_vm._v(\"6\")])])])])]),_c('section',{staticClass:\"footnotes\",attrs:{\"role\":\"doc-endnotes\"}},[_c('hr'),_c('ol',[_c('li',{attrs:{\"id\":\"fn1\",\"role\":\"doc-endnote\"}},[_c('p',[_vm._v(\"https://blog.golang.org/using-go-modules\"),_c('a',{staticClass:\"footnote-back\",attrs:{\"href\":\"#fnref1\",\"role\":\"doc-backlink\"}},[_vm._v(\"↩︎\")])])]),_c('li',{attrs:{\"id\":\"fn2\",\"role\":\"doc-endnote\"}},[_c('p',[_vm._v(\"a secret management software (https://github.com/hashicorp/vault)\"),_c('a',{staticClass:\"footnote-back\",attrs:{\"href\":\"#fnref2\",\"role\":\"doc-backlink\"}},[_vm._v(\"↩︎\")])])]),_c('li',{attrs:{\"id\":\"fn3\",\"role\":\"doc-endnote\"}},[_c('p',[_vm._v(\"a system for managing containerized applications across multiple hosts (HTTPS://github.com/kubernetes/kubernetes)\"),_c('a',{staticClass:\"footnote-back\",attrs:{\"href\":\"#fnref3\",\"role\":\"doc-backlink\"}},[_vm._v(\"↩︎\")])])]),_c('li',{attrs:{\"id\":\"fn4\",\"role\":\"doc-endnote\"}},[_c('p',[_vm._v(\"You can see a list of available software here: https://en.wikipedia.org/wiki/List_of_version-control_software\"),_c('a',{staticClass:\"footnote-back\",attrs:{\"href\":\"#fnref4\",\"role\":\"doc-backlink\"}},[_vm._v(\"↩︎\")])])]),_c('li',{attrs:{\"id\":\"fn5\",\"role\":\"doc-endnote\"}},[_c('p',[_vm._v(\"Linus Torvald is the creator and principal developer of the Linux Kernel.\"),_c('a',{staticClass:\"footnote-back\",attrs:{\"href\":\"#fnref5\",\"role\":\"doc-backlink\"}},[_vm._v(\"↩︎\")])])]),_c('li',{attrs:{\"id\":\"fn6\",\"role\":\"doc-endnote\"}},[_c('p',[_vm._v(\"https://blog.golang.org/using-go-modules\"),_c('a',{staticClass:\"footnote-back\",attrs:{\"href\":\"#fnref6\",\"role\":\"doc-backlink\"}},[_vm._v(\"↩︎\")])])])])]),_c('h1',[_vm._v(\"Bibliography\")]),_c('ChapterBibliography',{attrs:{\"chapter-id\":\"Chap11PackagesAndImports\"}}),_c('b-row',{staticClass:\"ml-1 mr-1 \"},[_c('b-col',{staticClass:\"text-center border mr-1 p-2\"},[_c('router-link',{attrs:{\"to\":{name:'Chap10Functions'}}},[_c('p',[_c('u',[_c('small',[_vm._v(\"Previous\")])])]),_c('p',[_c('small',[_vm._v(\"Functions\")])])])],1),_c('b-col',{staticClass:\"text-center border p-1 \"},[_c('router-link',{attrs:{\"to\":{name:'Chap12PackageInitialization'}}},[_c('p',[_c('u',[_c('small',[_vm._v(\"Next\")])])]),_c('p',[_c('small',[_vm._v(\"Package Initialization\")])])])],1)],1),_c('b-row',{staticClass:\"mt-1 ml-1 mr-1\"},[_c('b-col',{staticClass:\"text-center border p-1 \"},[_c('b-link',{attrs:{\"to\":{name:'Home'}}},[_vm._v(\"Table of contents\")])],1)],1),_c('FeedbackInvite'),_c('NewsletterInput'),_c('Footer')],1),_c('b-col')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chap11PackagesAndImports.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chap11PackagesAndImports.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Chap11PackagesAndImports.vue?vue&type=template&id=02df7f3d&scoped=true&\"\nimport script from \"./Chap11PackagesAndImports.vue?vue&type=script&lang=js&\"\nexport * from \"./Chap11PackagesAndImports.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02df7f3d\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/source_file.0a4d14ff.png\";","module.exports = __webpack_public_path__ + \"img/internal_directory.c05acbe1.png\";","module.exports = __webpack_public_path__ + \"img/go_program_package.acdaaa3b.png\";","module.exports = __webpack_public_path__ + \"img/folder_solution_package_app_2.645f58b2.png\";"],"sourceRoot":""}