Loading [MathJax]/jax/output/CommonHTML/jax.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言:1分钟写下第一个Go程序,并在终端里以指令方式运行

Go语言:1分钟写下第一个Go程序,并在终端里以指令方式运行

作者头像
LIYI
发布于 2021-01-27 04:43:44
发布于 2021-01-27 04:43:44
1.7K00
举报
文章被收录于专栏:艺述论专栏艺述论专栏
运行总次数:0

这是《Go语言简易入门》系列内容第5篇,所有内容列表见:https://yishulun.com/books/go-easy/目录.html

设置环境变量$GOPATH、$PATH

从官网(https://golang.org/dl/,国内可以从https://studygolang.com/dl下载)下载了Go语言安装包,并安装以后,此时在终端里执行指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go version

一般都可以显示版本号了。此时编写一个简单的go语言文件,也可以运行。

但此时Go语言完全运行所需的环境变量还没有完全准备就绪。一般我们在环境变量中,还需要设置一个名称为GOPATH的用户变量或系统变量,同时还需要将PATH的路径中。

在macOS上,我们可以在~/.bash_profile中设置用户变量,也可以在/etc/profile中设置系统变量。在Windows上,我们可以通过计算机属性->高级属性->设置变量进行设置。

$PATH路径的设置与之同理。

为什么要设置环境变量?

GOPATH变量不设置,不影响运行,它在Go语言安装包默认安装后有一个~/go的默认地址,但PATH的路径中。这是所有开发者自安装的Go语言第三方类库所生成的工具指令,在系统上能够被查到的基础,如果不设置,系统不知道去哪里查找我们在终端里随意写出的指令名称。

举个例子,gin是一个Go语言编写的为Go程序提供热编译功能的工具。在使用它的时候,我们首先需要安装它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get github.com/codegangsta/gin

然后,假设我们本地有一个main.go,可以这样执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gin run main.go // 启用热编译

此时用gin代替go,运行main.go,当我们修改了后者的代码以后,gin可以帮助我们自动重新编译并启动后者。这是gin的作用。

但是如果我们没有将PATH路径中,上面的gin指令就运行不了,它会提示一个“指令找不到”的错误。

go get可以帮助我们自动拉取类库源码,及目标类库所依赖的类库源码(放在了GOPATH/bin路径下。如果我们不在

如何验证环境变量?

所有环境变量设置完成以后,怎么验证呢?可以在终端里,可以使用go env查看所有Go语言相关的环境变量了。当然了,也可以单独使用echo查看特定的环境变量。如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go env // 查看所有go语言环境变量
go version // 查看版本
echo $PATH | grep /go/bin
echo $GOPATH

补充:go get指令到底做了哪些事情?

一个go get指令在执行后,相当于执行了以下步骤:

  1. git clone,将所有目标类库源码,及目标类库所依赖的源码下载到本地
  2. 开始执行go install,第一步是编译目标类库导入的包文件,所有被依赖的包文件被编译后,才能编译目标类库
  3. 开始编译目标类库的主程序,并将编译之后的可执行文件,拷贝至$GOPATH/bin目录下。如果目标类库是工具,它一定有一个main函数。

在终端里运行第一个Go程序

既然我们已经了解了如何在终端里执行额外的指令,接上来我们自己用Go语言写一个简单的程序,然后在终端里执行。

首先我们创建一个文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p $GOPATH/rixingyike/first/main.go

并编辑代码为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import "fmt"

func main() {
    fmt.Printf("hi,ly\n")
}

现在我们执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export GO111MODULE=off
go install rixingyike/first

正样的话现在$GOPATH/bin目录下已经多了一个名称为first的二进制可执行文件。在终端里可以执行它了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
first // output: hi,ly

在上面我们编译源码之前,为什么要先设置Go环境变量GO111MODULE等于off呢?可以把它设置为on,再试一下。这关系到Go语言的模式化,以下再讲。

我讲明白没有,欢迎留言。

2021年1月21日

本文撰写过程中参考了以下链接,一并致谢:

  • https://blog.csdn.net/qq_34777600/article/details/81319961
  • https://go-zh.org/doc/code.html
  • https://github.com/codegangsta/gin

本文有视频,请查看“程序员LIYI”视频号的“#Go语言简易入门”标签:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 艺述论 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go:如何使用书中示例 sim.go v2新版本及如何理解、使用 Go 语言的 mod 机制【视频】
从官网(https://golang.org/dl/,国内可以从https://studygolang.com/dl下载)下载了Go语言安装包,并安装以后,此时在终端里执行指令:
LIYI
2021/07/30
1.4K0
Go语言学习(一)| 环境搭建
~/gopath1/src/github.com/xxx~/gopath2/scr/github.com/xxx/usr/local/go/src/github.com/xxx
Mervyn
2020/07/21
7000
Golang学习笔记,从入门到精通,持续记录
Golang官网:https://go.dev/、Golang下载:https://go.dev/、Golang学习文档:https://go.dev/doc/
房东的狗丶
2023/02/17
1.4K0
学习go语言编程系列之helloworld
1. 下载 https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问。通过如下地址下载:https://golangtc.com/download。
编程随笔
2019/09/11
1.3K1
Go语言之讲解GOROOT、GOPATH、GOBIN
Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性.
超蛋lhy
2018/08/31
3.7K0
Go语言之讲解GOROOT、GOPATH、GOBIN
代码包是Go语言的灵魂:深入了解Go语言的代码组织方式和最佳实践
Go语言是一种简洁、高效、可靠的编程语言,它支持并发、垃圾回收、模块化等特性,适用于各种场景和领域。Go语言的源码是以代码包为基本组织单位的,一个代码包可以包含多个源码文件,每个源码文件都必须在文件头部声明自己所属的包名。代码包可以被其他代码包导入和使用,实现代码的复用和模块化。
运维开发王义杰
2023/08/10
7620
代码包是Go语言的灵魂:深入了解Go语言的代码组织方式和最佳实践
Gin 项目引入热加载
热加载(Hot Reloading)是指在应用程序运行时,对代码进行修改后,系统能够自动重新加载这些修改,而无需停止和重新启动整个应用程序。这使得开发者能够在不中断应用程序运行的情况下进行代码的调试和修改。
贾维斯Echo
2024/01/06
4620
Gin 项目引入热加载
浅谈GoPath和Go Modules包管理
从v1.5开始开始引入vendor模式,如果项目目录下有vendor目录,那么go工具链会优先使用vendor内的包进行编译、测试等
仙人技术
2021/08/31
1.3K0
浅谈GoPath和Go Modules包管理
go build命令(go语言编译命令)完全攻略
Go语言的编译速度非常快。Go 1.17 版本后默认利用Go语言的并发特性进行函数粒度的并发编译。
IT工作者
2021/12/16
35.1K0
第一个Go语言类库:启用、创建并发布第一个模块
模块化是编程界的潮流,无论是前端Vue、微信小程序开发,还是后端Node.js、Golang开发,都讲究模块化。模块化的本质是分工协作,将功能相对独立完善的代码以模块方式发布,以便在其它程序中复用,这与汽车厂分别制造发动机、轮胎、车门等零件,然后再组装是一个道理。
LIYI
2021/02/23
1.4K0
01基础入门:编写第一个Go语言程序
可以从官网 https://golang.org/dl/ (国外官网)和 https://golang.google.cn/dl/ (国内官网)下载Go语言开发包。
微客鸟窝
2021/08/18
6350
01基础入门:编写第一个Go语言程序
Go语言环境搭建详解(2020版)
最近写了很多Go语言的原创文章,其中Go语言实战系列30篇,近15W字,还有最近更新的Go经典库系列,不过通过大家的咨询来看,还是想要一些入门的知识,这一篇文章写于2017年初,这3年多Go更新了很多版本,所以需要更新下这篇文章。
飞雪无情
2020/11/05
6.6K0
GO语言基础之环境搭建
2、安装:下载完成后,Windows版本直接双击安装(记住这个安装地址,后面配置环境变量时需要用到)
墨紫羽墨
2021/12/19
2.3K1
第7节 Go语言环境搭建
当然你也可以登录Golang的国内网站:https://golang.google.cn/
小尘哥
2019/05/28
1.3K0
Go语言入门——环境准备篇(一)
Robert Griesemer:曾协助制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8
arcticfox
2019/07/31
7550
Go语言环境搭建详解
最近写了很多Go语言的原创文章,其中Go语言实战系列30篇,近15W字,还有最近更新的Go经典库系列,不过通过大家的咨询来看,还是想要一些入门的知识,这一篇文章写于2017年初,这里再更新一下,发给大家。
飞雪无情
2018/08/28
1K0
Go两周入门系列-go语言开发环境
目前go语言最新的版本是1.16.2,当然如果官方已经有最新的版本,直接选择最新的版本安装即可。
用户10002156
2023/09/21
4980
Go两周入门系列-go语言开发环境
8.Go工程管理
通过前面函数的学习,我们能够体会到函数的优势,就是可以将不同的功能放在不同的函数中实现,主函数(main( ))可以直接调用。这样结构非常的清晰,也非常方面代码的管理。如果我们把所有的代码都写在main( )函数中,会出现什么样的情况呢?
Devops海洋的渔夫
2022/01/17
4570
8.Go工程管理
安装和设置Go开发环境:详细指南
Go语言(又称Golang)是由Google开发的一种现代编程语言,因其简洁性、高性能和强大的并发支持,迅速在开发者中流行开来。要开始使用Go语言进行开发,我们需要首先安装和设置Go开发环境。本指南将详细介绍如何在不同操作系统上安装和配置Go开发环境,并展示一个简单的项目实例。
二一年冬末
2024/06/09
5.4K0
Go语言基本环境变量与依赖管理
最近开始系统学习一下Golang这么新语言,记录一下它的基本环境变量配置以及依赖管理方式。编写本文的时候使用的Golang版本为go1.13.5 windows/amd64,其他版本不一定保证适合本文的内容。因为习惯,可能有时候把Go语言称为Go,有时候称为Golang。
Throwable
2020/06/23
9.4K1
相关推荐
Go:如何使用书中示例 sim.go v2新版本及如何理解、使用 Go 语言的 mod 机制【视频】
更多 >
交个朋友
加入[后端] 腾讯云技术交流站
后端架构设计 高可用系统实现
加入腾讯云运维技术交流群
云平台运维技巧 分布式系统排障
加入[云原生] 腾讯云官方技术交流站
云原生技术前沿 容器化实践经验
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档