{"id":236,"date":"2024-11-05T00:34:00","date_gmt":"2024-11-05T00:34:00","guid":{"rendered":"https:\/\/realstudy.net\/?p=236"},"modified":"2025-04-17T03:06:04","modified_gmt":"2025-04-17T03:06:04","slug":"go-dev-environment-on-ubuntu","status":"publish","type":"post","link":"https:\/\/realstudy.net\/?p=236","title":{"rendered":"Go dev-environment on Ubuntu"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"236\" class=\"elementor elementor-236\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-af37a13 e-flex e-con-boxed e-con e-parent\" data-id=\"af37a13\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-304ed3c elementor-drop-cap-yes elementor-drop-cap-view-default elementor-widget elementor-widget-text-editor\" data-id=\"304ed3c\" data-element_type=\"widget\" data-settings=\"{&quot;drop_cap&quot;:&quot;yes&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>This is a step-by-step guide to configuring a development project using Go modules locally without any external dependencies. In the example for explanation, we will create a project directory under the ~\/workspace directory locally and proceed with development.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-29b6bf1 e-flex e-con-boxed e-con e-parent\" data-id=\"29b6bf1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7182090 elementor-widget elementor-widget-heading\" data-id=\"7182090\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">1. Install Go<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d6c9df1 elementor-widget elementor-widget-text-editor\" data-id=\"d6c9df1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Update the package list of your system to the latest version, install Go, and then complete the installation by checking that the installation was successful.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54afbde elementor-widget elementor-widget-code-highlight\" data-id=\"54afbde\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>user:~$ sudo add-apt-repository ppa:longsleep\/golang-backports\nuser:~$ sudo apt update\nuser:~$ sudo apt install golang\nuser:~$ go version<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-05c089c e-flex e-con-boxed e-con e-parent\" data-id=\"05c089c\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6adcf70 elementor-widget elementor-widget-heading\" data-id=\"6adcf70\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2. Create a working directory<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4fe8dc4 elementor-widget elementor-widget-text-editor\" data-id=\"4fe8dc4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Create a working directory for Go development. The project uses Go modules.<br \/>This method allows for more flexible project management than the traditional GOPATH structure. The module concept will be explained in detail as we configure the project.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a97af71 elementor-widget elementor-widget-code-highlight\" data-id=\"a97af71\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>user:~$ mkdir -p ~\/workspace<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-815fa05 e-flex e-con-boxed e-con e-parent\" data-id=\"815fa05\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cbd479a elementor-widget elementor-widget-heading\" data-id=\"cbd479a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">3. Go Environment Settings<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9bbf6fa elementor-widget elementor-widget-text-editor\" data-id=\"9bbf6fa\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Sets the environment variables required for Go development. GOPATH is not required when using Go modules, but may be required when using some tools or packages.<\/p><p>Set the environment in ~\/.bashrc so that the settings can be applied to the system even when rebooting. Register the Go environment variable at the end of the configuration file with an editor. Then apply .bashrc using the source command. It will be automatically applied when rebooting.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-253e60e elementor-widget elementor-widget-code-highlight\" data-id=\"253e60e\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>user:~$ vi ~\/.bashrc\n\n# Go Env variables\nexport GOPATH=$HOME\/workspace\nexport PATH=$PATH:$GOPATH\/bin\n\nuser:~$ source ~\/.bashrc<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b85518 elementor-widget elementor-widget-text-editor\" data-id=\"7b85518\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>GOPATH specifies the path to your Go workspace.<\/li><li>By adding GOPATH\/bin to your PATH, you can run binaries installed with Go directly from the terminal.<\/li><li>The Go binary installed with apt is likely already included in your system PATH, so you only need to add GOPATH\/bin to your PATH.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-38453b7 e-flex e-con-boxed e-con e-parent\" data-id=\"38453b7\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-af2677b elementor-widget elementor-widget-heading\" data-id=\"af2677b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">4. Create a project structure<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d3d8768 elementor-widget elementor-widget-text-editor\" data-id=\"d3d8768\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>Creates a standard directory structure for a Go project.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ac6dcda elementor-widget elementor-widget-code-highlight\" data-id=\"ac6dcda\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>user:~$ mkdir -p ~\/workspace\/myapp\/{bin,cmd,internal,pkg,configs,scripts}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d92480 elementor-widget elementor-widget-text-editor\" data-id=\"7d92480\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>bin\/: Directory where built executables are stored.<\/li><li>cmd\/: Stores the entry point of your application (e.g. the main package).<\/li><li>internal\/: Stores internal packages and is not accessible from outside.<\/li><li>pkg\/: Stores reusable packages.<\/li><li>configs\/: Stores configuration files.<\/li><li>scripts\/: Stores scripts for builds, deployments, etc.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-87d75eb e-flex e-con-boxed e-con e-parent\" data-id=\"87d75eb\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9ea0092 elementor-widget elementor-widget-heading\" data-id=\"9ea0092\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">5. Initialize Local Go Module<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9118631 elementor-widget elementor-widget-text-editor\" data-id=\"9118631\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tIn Golang, a module is the basic unit for managing program dependencies. The module system was introduced in Go 1.11 and provides much more convenient and powerful dependency management than the previous GOPATH-based project structure. Modules help prevent dependency conflicts, specify versions, and allow multiple developers to work consistently on the same codebase.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1620ea3 elementor-widget elementor-widget-text-editor\" data-id=\"1620ea3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>* Key concepts of the module<\/strong><\/div><div><div><strong>1. Module<\/strong> : A module is a collection of related packages and is managed through a <code>go.mod<\/code> file. Each module has a unique path and version and is often version-controlled (e.g., with Git).<\/div><div><strong>2. go.mod File<\/strong> : This file defines the module\u2019s configuration and dependencies. When you initialize a Go module, a <code>go.mod<\/code> file is created, specifying the module name, Go version, and any external dependencies with their versions.<\/div><div><strong>3. go.sum File<\/strong> : This file contains checksums of the dependencies listed in <code>go.mod<\/code>. It ensures the integrity of dependencies by verifying that their versions remain unchanged.<\/div><div><strong>4. Package<\/strong> : Modules contain packages, which are sub-units of code organized into directories. You can import packages to use in other modules or packages.<\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cabb069 elementor-widget elementor-widget-text-editor\" data-id=\"cabb069\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>This explains how to manage modules locally without using external sources (e.g. GitHub). Go modules natively support both local and remote modules, so using local modules is very simple. Initialize a Go module in the root directory of your project. This sets the module path to be used throughout your project.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dbda1c0 elementor-widget elementor-widget-code-highlight\" data-id=\"dbda1c0\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>user:~$ cd ~\/workspace\/myapp\nuser:~$ go mod init myapp<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-db7e079 elementor-widget elementor-widget-text-editor\" data-id=\"db7e079\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>A go.mod file is created in the project root (~\/workspace\/myapp\/go.mod).<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fbd2103 e-flex e-con-boxed e-con e-parent\" data-id=\"fbd2103\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-535503b elementor-widget elementor-widget-heading\" data-id=\"535503b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">6. Create internal package<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a7cf381 elementor-widget elementor-widget-text-editor\" data-id=\"a7cf381\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><div>Let&#8217;s create an example of creating an internal package in the internal directory. The necessary functionality can be created using this method.<\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1898dfd elementor-widget elementor-widget-code-highlight\" data-id=\"1898dfd\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>user:~$ mkdir -p internal\/util<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f19f989 elementor-widget elementor-widget-text-editor\" data-id=\"f19f989\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>Create internal\/util\/util.go file.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a55c809 elementor-widget elementor-widget-code-highlight\" data-id=\"a55c809\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-go line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-go\">\n\t\t\t\t\t<xmp>package util\n\nimport \"fmt\"\n\n\/\/ SayHello prints a greeting message\nfunc SayHello(name string) {\n    fmt.Printf(\"Hello, %s!\\n\", name)\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6d86f0e e-flex e-con-boxed e-con e-parent\" data-id=\"6d86f0e\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-85edeaf elementor-widget elementor-widget-heading\" data-id=\"85edeaf\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">7. Create a main package<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2543379 elementor-widget elementor-widget-text-editor\" data-id=\"2543379\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>Create cmd\/main.go file.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1dfd4f7 elementor-widget elementor-widget-code-highlight\" data-id=\"1dfd4f7\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-go line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-go\">\n\t\t\t\t\t<xmp>package main\n\nimport \"myapp\/internal\/util\"\n\nfunc main() {\n    util.SayHello(\"Go Developer\")\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c9038a elementor-widget elementor-widget-text-editor\" data-id=\"6c9038a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>import &#8220;myapp\/internal\/util&#8221; refers to the internal package based on the module name (myapp) set in the go.mod file. This is why the module initialization was done in the project root.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-748f653 e-flex e-con-boxed e-con e-parent\" data-id=\"748f653\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-05945de elementor-widget elementor-widget-heading\" data-id=\"05945de\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">8. Run and Compile<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e489f52 elementor-widget elementor-widget-text-editor\" data-id=\"e489f52\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>You can run the program immediately without compile.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58bf077 elementor-widget elementor-widget-code-highlight\" data-id=\"58bf077\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-go line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-go\">\n\t\t\t\t\t<xmp>user:~$ cd ~\/workspace\/myapp\nuser:~\/workspace\/myapp$ go run .\/cmd<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b9b338 elementor-widget elementor-widget-text-editor\" data-id=\"7b9b338\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>You can build the program by compiling it. This will create an executable binary named myapp in the bin directory.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d01ddfe elementor-widget elementor-widget-code-highlight\" data-id=\"d01ddfe\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-go line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-go\">\n\t\t\t\t\t<xmp>user:~\/workspace\/myapp$ go build -o bin\/myapp .\/cmd<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f2db80b elementor-widget elementor-widget-text-editor\" data-id=\"f2db80b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>You can run the built executable binary.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a65bf7 elementor-widget elementor-widget-code-highlight\" data-id=\"9a65bf7\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-go line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-go\">\n\t\t\t\t\t<xmp>user:~\/workspace\/myapp$ bin\/myapp<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7930af8 e-flex e-con-boxed e-con e-parent\" data-id=\"7930af8\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-34ead4d elementor-widget elementor-widget-heading\" data-id=\"34ead4d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">9. Using Makefile<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-717df27 elementor-widget elementor-widget-text-editor\" data-id=\"717df27\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>You can use Makefiles to automate various tasks such as building, testing, and cleaning.<\/div>\n<div>Create ~\/workspace\/myapp\/Makefile<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bb5385f elementor-widget elementor-widget-code-highlight\" data-id=\"bb5385f\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>BINARY_NAME=myapp\nBUILD_DIR=bin\n\n.PHONY: all build run clean\n\nall: build\n\nbuild:\n\tgo build -o $(BUILD_DIR)\/$(BINARY_NAME) .\/cmd\n\nrun: build\n\t$(BUILD_DIR)\/$(BINARY_NAME)\n\nclean:\n\trm -f $(BUILD_DIR)\/$(BINARY_NAME)\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ba7a30 elementor-widget elementor-widget-text-editor\" data-id=\"4ba7a30\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>* How to use:<\/strong><\/div>\n<div>\u00a0 \u00a0&gt; Build: make build<\/div>\n<div>\u00a0 \u00a0&gt; Run: make run<\/div>\n<div>\u00a0 \u00a0&gt; Clean: make clean<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>This is a step-by-step guide to configuring a development project using Go modules locally without any external dependencies. In the&hellip;<\/p>\n","protected":false},"author":1,"featured_media":238,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[21],"tags":[],"class_list":["post-236","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computer_en"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/go-ubuntu.jpeg","_links":{"self":[{"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/posts\/236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=236"}],"version-history":[{"count":37,"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/posts\/236\/revisions"}],"predecessor-version":[{"id":1057,"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/posts\/236\/revisions\/1057"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/media\/238"}],"wp:attachment":[{"href":"https:\/\/realstudy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}