<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Go on farmer3-c Blog</title><link>https://farmer3-c.github.io/tags/go/</link><description>Recent content in Go on farmer3-c Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 28 Jan 2026 13:17:03 +0800</lastBuildDate><atom:link href="https://farmer3-c.github.io/tags/go/index.xml" rel="self" type="application/rss+xml"/><item><title>go环境安装</title><link>https://farmer3-c.github.io/posts/go/</link><pubDate>Wed, 28 Jan 2026 13:17:03 +0800</pubDate><guid>https://farmer3-c.github.io/posts/go/</guid><description>&lt;h2 id="go-计算机编程语言"&gt;Go 计算机编程语言&lt;/h2&gt;
&lt;p&gt;Go（又称为Golang）是一种由Google开发的开源编程语言，于2009年首次公开发布。它旨在提供简洁、高效、可靠的软件开发解决方案。Go是一种静态强类型、编译型语言，具有很强的表达能力，得益于其并发机制，用它编写的程序能够非常有效地利用多核与联网的计算机。&lt;/p&gt;
&lt;h4 id="主要特点"&gt;主要特点&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Go语言的设计目标是将静态语言的安全性和性能与动态语言的易用性相结合。它在语言层面提供了对协程的支持，特别适合编写高并发的项目。以下是Go语言的一些主要特点：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简洁、快速、安全：Go语言的语法接近C语言，但更简洁，编译速度非常快，且具有内置的垃圾回收功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;并发支持：Go语言内置了轻量级进程（goroutine）、通道和select语句等并发原语，使得编写并发程序变得简单和高效。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;模块化：Go语言采用模块化的方式组织代码，易于维护和重用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;跨平台：Go语言支持跨平台编译，可以在不同的操作系统上进行开发和部署。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装"&gt;安装&lt;/h2&gt;
&lt;p&gt;在Windows中安装Go:&lt;/p&gt;
&lt;p&gt;安装包下载地址为：https://go.dev/dl/。&lt;/p&gt;
&lt;p&gt;如果打不开可以使用这个地址：https://golang.google.cn/dl/。&lt;/p&gt;
&lt;h2 id="运行第一个go程序"&gt;运行第一个go程序&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保存为hello.go&lt;/p&gt;
&lt;h4 id="终端运行"&gt;终端运行&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ go run hello.go
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Hello, World!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在同一命令提示符窗口中，第一次运行这个程序时，会耗时较多，在我的电脑上大约需要2~3秒，之后再运行这个程序就会很快，但关闭这个窗口，隔一段时间下次运行情况如初。&lt;/p&gt;
&lt;p&gt;原因是这个命令会先编译 .go 文件，然后再运行编译后的可执行文件，所以第一次运行会比较慢。&lt;/p&gt;
&lt;p&gt;可以使用go build命令来编译程序，然后再运行编译后的可执行文件，这样就不会每次都重新编译了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ go build hello.go
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ./hello
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Hello, World!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="vs-code运行"&gt;VS Code运行&lt;/h4&gt;
&lt;p&gt;在VS Code中安装Go插件，然后打开hello.go文件，点击运行按钮，就可以运行这个程序了。&lt;/p&gt;
&lt;p&gt;我遇到了几个问题：&lt;/p&gt;
&lt;h6 id="1-vs-code-在安装-go-语言的核心工具gopls-和-dlv时无法连接到官方的-go-模块代理服务器proxygolangorg导致网络连接超时失败"&gt;1. VS Code 在安装 Go 语言的核心工具（gopls 和 dlv）时，无法连接到官方的 Go 模块代理服务器（proxy.golang.org），导致网络连接超时失败。&lt;/h6&gt;
&lt;p&gt;报错中有&lt;code&gt;dial tcp 142.251.45.145:443: connectex: A connection attempt failed&lt;/code&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="go-计算机编程语言">Go 计算机编程语言</h2>
<p>Go（又称为Golang）是一种由Google开发的开源编程语言，于2009年首次公开发布。它旨在提供简洁、高效、可靠的软件开发解决方案。Go是一种静态强类型、编译型语言，具有很强的表达能力，得益于其并发机制，用它编写的程序能够非常有效地利用多核与联网的计算机。</p>
<h4 id="主要特点">主要特点</h4>
<ul>
<li>
<p>Go语言的设计目标是将静态语言的安全性和性能与动态语言的易用性相结合。它在语言层面提供了对协程的支持，特别适合编写高并发的项目。以下是Go语言的一些主要特点：</p>
</li>
<li>
<p>简洁、快速、安全：Go语言的语法接近C语言，但更简洁，编译速度非常快，且具有内置的垃圾回收功能。</p>
</li>
<li>
<p>并发支持：Go语言内置了轻量级进程（goroutine）、通道和select语句等并发原语，使得编写并发程序变得简单和高效。</p>
</li>
<li>
<p>模块化：Go语言采用模块化的方式组织代码，易于维护和重用。</p>
</li>
<li>
<p>跨平台：Go语言支持跨平台编译，可以在不同的操作系统上进行开发和部署。</p>
</li>
</ul>
<h2 id="安装">安装</h2>
<p>在Windows中安装Go:</p>
<p>安装包下载地址为：https://go.dev/dl/。</p>
<p>如果打不开可以使用这个地址：https://golang.google.cn/dl/。</p>
<h2 id="运行第一个go程序">运行第一个go程序</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">package</span><span class="w"> </span><span class="nx">main</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="s">&#34;fmt&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">func</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Hello, World!&#34;</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>保存为hello.go</p>
<h4 id="终端运行">终端运行</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ go run hello.go
</span></span><span class="line"><span class="cl">Hello, World!
</span></span></code></pre></td></tr></table>
</div>
</div><p>在同一命令提示符窗口中，第一次运行这个程序时，会耗时较多，在我的电脑上大约需要2~3秒，之后再运行这个程序就会很快，但关闭这个窗口，隔一段时间下次运行情况如初。</p>
<p>原因是这个命令会先编译 .go 文件，然后再运行编译后的可执行文件，所以第一次运行会比较慢。</p>
<p>可以使用go build命令来编译程序，然后再运行编译后的可执行文件，这样就不会每次都重新编译了。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ go build hello.go
</span></span><span class="line"><span class="cl">$ ./hello
</span></span><span class="line"><span class="cl">Hello, World!
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="vs-code运行">VS Code运行</h4>
<p>在VS Code中安装Go插件，然后打开hello.go文件，点击运行按钮，就可以运行这个程序了。</p>
<p>我遇到了几个问题：</p>
<h6 id="1-vs-code-在安装-go-语言的核心工具gopls-和-dlv时无法连接到官方的-go-模块代理服务器proxygolangorg导致网络连接超时失败">1. VS Code 在安装 Go 语言的核心工具（gopls 和 dlv）时，无法连接到官方的 Go 模块代理服务器（proxy.golang.org），导致网络连接超时失败。</h6>
<p>报错中有<code>dial tcp 142.251.45.145:443: connectex: A connection attempt failed</code></p>
<p>可以知道：</p>
<ul>
<li>由于网络环境限制，电脑无法访问谷歌的官方 Go 模块代理服务器</li>
<li>这是国内使用 Go 开发时非常常见的网络问题，并非代码或软件本身的故障</li>
</ul>
<p><strong>解决办法</strong></p>
<p>需要将 Go 的模块代理切换为国内的镜像源（如七牛云的 goproxy.cn），具体操作步骤如下：</p>
<p>按下 Win + R，输入 sysdm.cpl 并回车，打开系统属性，切换到「高级」标签页，点击「环境变量」</p>
<p>在「用户变量」区域，点击「新建」：
变量名：GOPROXY
变量值：https://goproxy.cn,direct</p>
<p>再新建一个变量（如果不存在）：
变量名：GO111MODULE
变量值：on
点击「确定」保存所有设置</p>
<p>重新安装 Go 工具
完成代理配置后，重启 VS Code，然后按以下步骤重新安装工具：
在 VS Code 中打开任意 .go 文件
右下角会提示「Install Go tools」，点击「Install」
或者按下 Ctrl+Shift+P（Mac 是 Cmd+Shift+P），输入 Go: Install/Update Tools
全选所有工具，点击「确定」开始安装</p>
<h6 id="2-运行时提示-initialization-failed-packagesload-error-err-exit-status-1-stderr-go-gomod-file-not-found-in-current-directory-or-any-parent-directory">2. 运行时提示：<code> &quot;initialization failed: packages.Load error: err: exit status 1: stderr: go: go.mod file not found in current directory or any parent directory&quot;</code></h6>
<p>从错误信息 go: go.mod file not found in current directory or any parent directory
可以知道：</p>
<ul>
<li>Go 1.11 及以上版本默认启用了模块（Modules） 机制，调试工具（dlv）在编译调试程序时，会要求项目必须是一个合法的 Go 模块（即存在 go.mod 文件）。</li>
<li>项目目录没有初始化 Go 模块，所以编译和调试都无法正常进行。</li>
</ul>
<p><strong>解决办法</strong></p>
<p>在项目目录下执行以下命令，初始化 Go 模块：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">go mod init &lt;module_name&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><p>其中，&lt;module_name&gt; 是你想要为项目指定的模块名称。</p>
<p>执行完命令后，会在项目目录下生成一个 go.mod 文件，该文件包含了项目的模块信息。</p>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://www.runoob.com/go/go-environment.html">菜鸟教程</a></li>
</ul>
]]></content:encoded></item></channel></rss>