Go语言基础系列-环境配置和 Hello world
Go语言基础系列-环境配置和 Hello world
前面几周陆陆续续写了一些后端技术的文章,包括数据库、微服务、内存管理等等,我比较倾向于成体系的学习,所以数据库和微服务还有后续系列文章补充。
最近工作上比较多的 Golang 编程,现在很多互联网公司都在转向 Golang 开发,所以打算写一写有关 Go 语言学习的系列文章,目标是从 Go 基础到进阶输出一系列文章,沉淀下这些知识同时也给大家做参考,力求做到通俗易懂,即使你是 Golang 小白也能看懂,如果你是老手也能温故知新。
本文将要和你分享 linux 下安装 Golang 环境,并且讲解如何通过配置 VSCode 远程开发调试 Golang 程序。
下载源码
你可以用系统自带的包管理工具比如 yum 或 apt-get 来安装Golang开发环境。不过,为了通用性,我选择通过源码的方式来安装和讲解,在官网下载源码,下载地址 https://golang.org/dl/
手动安装
解压安装
我这里下载下来的源码包 go1.14.2.linux-amd64.tar.gz 放到远程 Linux 服务器目录下。执行以下命令安装到 /usr/local 目录。
tar -zxvf -C /usr/local/ go1.14.2.linux-amd64.tar.gz
创建工作空间
工作空间是你Go项目的「工作目录」,挑选一个合适目录,执行下面操作:
mkdir GoPath
mkdir -p GoPath/src
mkdir -p GoPath/bin
mkdir -p GoPath/pkg
三个目录含义:
src: 源码路径(例如:.go、.c、.h、.s 等)
pkg: 编译包时,生成的.a文件存放路径
bin: 编译生成的可执行文件路径
配置环境变量
安装过程中有这么几个环境变量需要配置,先来了解一下:
GOROOT:Go的安装路径,也就是前面我们解压到的目录 /usr/local/go。
GOBIN:Go项目的二进制文件存放目录。
GOPATH:Go的工作空间。前面有介绍的工作空间目录。
在 /etc/profile 文件追加以下内容完成设置。
export GOROOT=/usr/local/go
export GOPATH=/yourpath/GoPath # 设置你自己的GoPath路径
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin # 加入到PATH环境变量
export PATH=$PATH:$GOPATH/bin
source /etc/profile #立即生效
验证安装
go version #检查版本
go version go1.14.2 linux/amd64 # 输出版本号
如果看到版本信息就代表安装成功了!
远程开发
上面我们在 Linux 环境下安装好了 Golang 开发环境,但我不想每次打开终端登录服务器编写调试程序,怎么才能在本地PC开发调试Golang程序呢?
看过我上一篇Vscode远程开发的小伙伴应该能想到方法,我们就要用Vscode搭建Golang远程开发环境。具体的远程开发配置可以查看我的另一篇文章。
Golang开发插件
首先安装官方推荐的 Go 开发插件,如下,点他安装。
接着还会出现如下的提示,是因为缺少其他 Go 开发相关插件,点 install all 全都装上就行。
Hello World
编程界有个惯例,什么语言开始学习都是从 Hello World 开始。现在,我们就用 Golang 编写第一个 HelloWorld 程序吧。
上代码:
package main // 所有Go程序从main包开始运行
import "fmt" // 导入fmt包
func main() {
fmt.Print("hello world", " i am ready to go :)\n") fmt.Println("hello world", "i am ready to go :)")
}
格式化 包
fmt 实现了类似 C++/C 语言的格式IO库功能。
Print 和 Println 都可用于打印输出,但是功能略有不同。可以看到我在Print 函数中,对后一个字符串加了空格和换行符,这样两个打印出来的结果是相同的。
Print
func Print(a ...interface{}) (n int, err error)
Print采用默认格式将其参数格式化并写入标准输出。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。返回写入的字节数和遇到的任何错误。
Println
func Println(a ...interface{}) (n int, err error)
Println采用默认格式将其参数格式化并写入标准输出。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符。返回写入的字节数和遇到的任何错误。
调试
终端调试
在终端命令行源码所在目录输入go run 运行程序。
go run HelloWorld.go
//输出
hello world i am ready to go :)
hello world i am ready to go :)
也可以先编译go build 得到可执行文件后再运行。
go build HelloWorld.go
ls
HelloWorld HelloWorld.go
./HelloWorld
hello world i am ready to go :)
hello world i am ready to go :)
Vscode调试
按F5启动调试,编辑与调试控制台输出如下:
命令行参数获取
命令行参数可以通过os 包的 Args 函数获取,代码如下:
package main
import (
"fmt" "os" "strconv"
)
func main() {
// 命令行参数获取,os.Args第一个参数是程序自身 fmt.Println(os.Args) for idx, args := range os.Args { fmt.Println("参数"+strconv.Itoa(idx)+":", args) }
}
终端设置
以下是带参数argv1 argv2 运行golang程序和输出。
go run basic.go argv1 argv2
输出
[/tmp/go-build441686724/b001/exe/basic argv1 argv2]
参数0: /tmp/go-build441686724/b001/exe/basic
参数1: argv1
参数2: argv2
VSCode设置
launch.json文件的 args 属性配置可以设置程序启动调试的参数。
设置之后,按F5 启动调试,就会在调试控制台输出配置的参数。
环境变量获取
命令行参数可以通过os 包的 Getenv 函数获取,代码如下:
package main
import (
"fmt" "os"
)
func main() {
// 获取环境变量 fmt.Println(os.Getenv("type"), os.Getenv("name"), os.Getenv("GOROOT"))
}
VSCode设置环境变量
launch.json 文件的 args 属性配置可以设置 VSCode 调试的 Golang 程序环境变量。
设置的格式是:name:vaule 形式,注意都是字符串。
终端设置环境变量
终端的环境变量设置就是可以用 Linux 的 export 命令设置,之后就可以用 os.Getenv 函数读取。
比如我们最初设置 GOROOT 环境变量的命令
export GOROOT=/usr/local/go
就可以用 os.Getenv("GOROOT") 读取,比较简单,这里就不多说了。
总结
现在,你有了一个可以远程开发调试 Golang 的环境,赶紧去写个 hello world 体验一下吧!今天的分享就到这,下一篇文章讲解基础语法。
老规矩,感谢各位的阅读,文章的目的是分享对知识的理解,技术类文章我都会反复求证以求最大程度保证准确性,若文中出现明显纰漏也欢迎指出,我们一起在探讨中学习。今天的技术分享就到这里,我们下期再见。
Reference
设置GOPATH
Visual Studio Code变量参考
Golang 获取系统环境变量
os库获取命令行参数
原创不易,不想被白票,如果在我这有收获,就动动手指「点赞」和「转发」是对我持续创作的最大支持。
可以微信搜索公众号「 后端技术学堂 」回复「资料」「1024」有我给你准备的各种编程学习资料。文章每周持续更新,我们下期见!
作者:柠檬橙1024
出处:https://www.cnblogs.com/NanoDragon/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
好程序员大数据培训分享HBase Filter过滤器概述
好程序员大数据培训分享HBase Filter过滤器概述,过滤器介绍HBase过滤器是一套为完成一些较高级的需求所提供的API接口。过滤器也被称为下推判断器(push-down predicates),支持把数据过滤标准从客户端下推到服务器,带有 Filter 条件的 RPC 查询请求会把 Filter 分发到各个 RegionServer,所有的过滤器都在服务端生效,使被过滤掉的数据不会被传送到客户端,这些过滤逻辑在读操作时使用,可以有效降低网络传输的压力。过滤器组成过滤器主要有过滤器本身、比较器和比较运算符组成。 操作符抽象操作符,也叫比较运算符。 LESS:小于LESS_OR_EQUAL:小于等于EQUAL:等于NOT_EQUAL:不等于GREATER:大于GREATER_OR_EQUAL:大于等于NO_OP:排除一切值 比较器BinaryComparator:二进制比较器,用于按字典顺序比较指定字节数组。 BinaryPrefixComparator:二进制比较器,只比较前缀是否与指定字节数组相同。NullComparator:控制比较式,判断当前值是不是为null。BitCo...
- 下一篇
4年iOS开发经验,我是如何从一个小开发者晋升到团队管理岗的 ?
前言 尤其是在最近一段时间内,感觉一天天的时间过得又慢又快,慢的是感觉复工了以后在公司的8.9个小时简直算是煎熬了,快的是常常感觉时间一天天,一月月的过去了,可是发现自己还在原路踏步走。 看似每天忙成狗,回头却发现,月复一月,日复一日,薪资没涨一点,年龄越来越大了。不知道时间都到哪里去了,明明是每天兢兢业业的工作,可是怎么就得不到提升呢?其实是我们的学习效率太低,没有合理 的规划而已~ 总结了一下为什么效率这么低,完全规划不起来呢? 我们在上学以来一直都羡慕那种玩的多但是考的又好的人,他学习的时候你也在学习,他玩的时候你也在学习,但实际上每次考试他都能领先你一大截,有的时候我们看似都在安安静静的学习,但是效率却是个很大的差别,你学习两个小时的效果都不一定有别人半个钟头的学习效果好,这就是效率问题,那么为什么学习效率会有如此的差别呢? 在我看来,最重要的原因就是:方法 在这个知识膨胀的时代,每天面对铺面而来的海量信息,我们的学习也不再是按照以往传统的学习模式了,更重要的是我们要进行科学学习, 什么是学习? 学会学习才是根本,如何学会学习,那就要讲求方法了,我们经常看到一些学霸等传奇人物,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程