带你学够浪: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
函数中,对后一个字符串加了空格和换行符,这样两个打印出来的结果是相同的。
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
原创不易,不想被白票,如果在我这有收获,就动动手指「点赞」和「转发」是对我持续创作的最大支持。
可以微信搜索公众号「 后端技术学堂 」回复「资料」「1024」有我给你准备的各种编程学习资料。文章每周持续更新,我们下期见!
带你学够浪:Go语言基础系列-环境配置和 Hello world的更多相关文章
- 带你学够浪:Go语言基础系列 - 8分钟学基础语法
对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握. 基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Go ...
- 带你学够浪:Go语言基础系列 - 8分钟学控制流语句
★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...
- 带你学够浪:Go语言基础系列 - 8分钟学复合类型
★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...
- 带你学够浪:Go语言基础系列 - 10分钟学方法和接口
文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 对于一般的语言使用者来说 ,20% 的语言特性就能够满 ...
- SpringBoot基础系列-SpringBoot配置
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9990680.html SpringBoot基础系列-SpringBoot配置 概述 属性 ...
- 零基础学Python--------第2章 Python语言基础
第2章 Python语言基础 2.1 Python语法特点 2.11注释 在Python中,通常包括3种类型的注释,分别是单行注释.多行注释和中文编码声明注释. 1.单行注释 在Python中,使用 ...
- go 语言开发1 环境配置和语言基础
Go 语言环境配置 windows 环境变量: 设置 GOROOT (安装路径),GOPATH(工程目录) Path 中加入 %GOROOT%/bin 和 %GOPATH%/bin mac 环境变量: ...
- Android 开发基础及环境配置
2011年买了第一部安卓操作系统的手机,当时势头正盛的HTC不可思议(incredible),当时的想法就是想学习下智能手机开发,但是由于各种原因,客观上是公司的项目太忙了,忙于项目管理.团队建设.客 ...
- Vue基础(环境配置、内部指令、全局API、选项、内置组件)
1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...
随机推荐
- JAVA基础篇 之 finalize()方法的作用
我们知道java有垃圾回收器负责回收无用对象占据的内存资源,但也有特殊情况:假设你的对象(并非使用new)获得了一块特殊的内存区域,由于垃圾回收器只知道回收那些经由new分配的内存,所以它不知道如 ...
- 单向环形链表解决约瑟夫环(Josephus)问题
一.约瑟夫环问题 Josephu 问题为:设编号为1,2,- n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那 ...
- 如何得知某期刊是否被EI收錄?
转载:http://tul.blog.ntu.edu.tw/archives/4627 若因投稿或評鑑需要,欲得知某期刊是否被 EI 收錄,其實就是確認該期刊是否包含在 EV 平台中的 COMPEND ...
- Linux登录shell和非登录(交互式shell)环境变量配置
使用Jenkins执行shell脚本的时候, 碰到command not found. 比如java mvn, 这些环境变量配置在/etc/profile 中, 但jenkins执行的时候并没有加载. ...
- shell 光标处理快捷键
Ctrl+左右键 单词之间跳转Ctrl+a跳到本行的行首, Ctrl+e则跳到页尾. Ctrl+u删除当前光标前面的文字 ctrl+k-删除当前光标后面的文字 Ctrl+w和Alt+d-对于当前的单词 ...
- 疑问_网址参数不同的时候改如何选择_MySQL_芬兰站
豹子安全-注入工具-疑问_网址参数不同的时候改如何选择_MySQL_芬兰站_kouvolankipparit.fi_基于联合查询_20200416 www.leosec.net 请看下列GIF视频:
- Android 编译系统
1,Makefile编译方式 TARGET: PREREQUISITES COMMANDS 1,TARGET是需要生成的目标文件,PREREQUISTIES代表了目标所依赖的所有文件. 2,简单的Ma ...
- mysql 5.7.22安装
1.解压目录. 2.安装 3.重新设置密码 set password=password('123456'); FLUSH PRIVILEGES;
- 转帖 支撑4.5亿活跃用户的WhatsApp架构概览
http://www.csdn.net/article/2014-02-27/2818559-an-overview-at-whatsapp's-19b-architecture/2 写的很好,确实牛 ...
- tcmalloc安装
环境是centos 6 (64位) yum list libunwind-devel (epel 源) wget https://gperftools.googlecode.com/files/gp ...