文章每周持续更新,你的「点赞」「关注」是对我最大的肯定,可以微信搜公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇)

前面几周陆陆续续写了一些后端技术的文章,包括数据库、微服务、内存管理等等,我比较倾向于成体系的学习,所以数据库和微服务还有后续系列文章补充。

最近工作上比较多的 Golang 编程,现在很多互联网公司都在转向 Golang 开发,所以打算写一写有关 Go 语言学习的系列文章,目标是从 Go 基础到进阶输出一系列文章,沉淀下这些知识同时也给大家做参考,力求做到通俗易懂,即使你是 Golang 小白也能看懂,如果你是老手也能温故知新。

本文将要和你分享 linux 下安装 Golang 环境,并且讲解如何通过配置 VSCode 远程开发调试 Golang 程序。

下载源码

你可以用系统自带的包管理工具比如 yum 或 apt-get 来安装Golang开发环境。不过,为了通用性,我选择通过源码的方式来安装和讲解,在官网下载源码,下载地址 https://golang.org/dl/

官方下载界面.png

手动安装

解压安装

我这里下载下来的源码包 go1.14.2.linux-amd64.tar.gz 放到远程 Linux 服务器目录下。执行以下命令安装到 /usr/local 目录。

tar -zxvf -C /usr/local/ `go1.14.2.linux-amd64.tar.gz`

创建工作空间

工作空间是你Go项目的「工作目录」,挑选一个合适目录,执行下面操作:

mkdir GoPathmkdir -p GoPath/srcmkdir -p GoPath/binmkdir -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/goexport GOPATH=/yourpath/GoPath # 设置你自己的GoPath路径 export GOBIN=$GOPATH/binexport 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插件

接着还会出现如下的提示,是因为缺少其他 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 :)")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 # lsHelloWorld  HelloWorld.go# ./HelloWorld hello world i am ready to go :)hello world i am ready to go :)

Vscode调试

按F5启动调试,编辑与调试控制台输出如下:

Vscode调试

命令行参数获取

命令行参数可以通过os 包的 Args 函数获取,代码如下:

package mainimport ("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 属性配置可以设置程序启动调试的参数。

vscode命令行参数设置

设置之后,按F5 启动调试,就会在调试控制台输出配置的参数。

vscode带参数调试输出

环境变量获取

命令行参数可以通过os 包的 Getenv 函数获取,代码如下:

package mainimport ("fmt""os")func main() {// 获取环境变量fmt.Println(os.Getenv("type"), os.Getenv("name"), os.Getenv("GOROOT"))}

VSCode设置环境变量

launch.json 文件的 args 属性配置可以设置 VSCode 调试的 Golang 程序环境变量。

设置的格式是:name:vaule 形式,注意都是字符串。

vscode环境变量设置

终端设置环境变量

终端的环境变量设置就是可以用 Linux 的 export 命令设置,之后就可以用 os.Getenv 函数读取。

比如我们最初设置 GOROOT 环境变量的命令

export GOROOT=/usr/local/go

就可以用 os.Getenv("GOROOT") 读取,比较简单,这里就不多说了。

总结

现在,你有了一个可以远程开发调试 Golang 的环境,赶紧去写个 hello world 体验一下吧!今天的分享就到这,下一篇文章讲解基础语法。

老规矩,感谢各位的阅读,文章的目的是分享对知识的理解,技术类文章我都会反复求证以求最大程度保证准确性,若文中出现明显纰漏也欢迎指出,我们一起在探讨中学习。今天的技术分享就到这里,我们下期再见。

另外,预告一下,写公号「后端技术学堂」几个月了,明天会在公众号发个粉丝福利,给大家申请了一批当当网购书优惠券,优惠力度很大,需要买「计算机类图书」的同学自取,数量有限,送完即止。

原创不易,不想被白票,如果在我这有收获,就动动「点赞和关注」是对我持续创作的最大支持。

文章每周持续更新,可以微信搜索公众号「 后端技术学堂 」提前看,关注后回复「资料」有我给你准备的各种编程学习资料,我们下期见!

goland 远程调试go_手把手教你学Go语言,基础环境配置和Hello World相关推荐

  1. 《手把手教你学C语言》学习笔记(1)---C语言的特点

    学习C语言的原因,主要是需要使用C语言编程,我用故我学,应该是最主要的原因了. C语言的定位:C语言严格意义上只能算是中级语言,是面向过程编程语言的集大成者,虽然这种语言有很多的问题,但总体而言是瑕不 ...

  2. 《手把手教你学C语言》学习笔记(10)--- 程序的循环控制

    C语言程序设计中,有些代码需要重复执行很多次,循环主要有三类: 一.for循环 1.基本格式为:for(表达式1:表达式2:表达式3){ //表达式1:循环变量赋初值 //表达式2:循环变量满足的条件 ...

  3. 02、老徐教你学C语言基础篇2——C语言摩拳擦掌齐上阵(环境篇)——理论

    工欲善其事必先利其器 君欲学语言必先熟其境 C语言的语法.理论前面我们有了一定的了解,但是看书永远看不出一个程序员,再好的武功秘籍没经过10数年的敲打也不可能成为绝世高手,段誉毕竟是少数,我们还是老老 ...

  4. 05、老徐教你学C语言基础篇4——C语言之门(运算篇)

    有了数据,下来比较重要的就是运算了,就像我们小时候学的--人是社会的人,离开了社会就不能称之为人,数据也是一样的,单个的数据没有什么意义,只有参与运算的数据才能绽放属于他自己的光和热! 一.本章目标 ...

  5. 老徐教你学C语言(C语言进门教程)

          都说C语言是所有语言的根基--得C语言者得天下,为了更好的方便初学者入门,特编辑了以下C语言进门教程--老徐教你学C语言,希望对初学者有所帮助   00.老徐教你学C语言--C语言学习之道 ...

  6. 模板匹配、抓圆、抓边、二维码 零基础labview视觉培训教程《龙哥手把手教你学视觉》只有不会教的老师,没有学不会的学生

    <龙哥手把手教你学视觉>周末班招生简章 教师简介: 江湖人称-龙哥,使用LabVIEW开发了大量视觉检测.运动控制.数据采集方面软件,具有丰富的非标自动化设备经验.www.ni-visio ...

  7. 第11章 UART 串口通信(手把手教你学51单片机pdf部分)

    手把手教你学51单片机-C语言版.pdf  

  8. python global用法_14_手把手教你学Python之函数(下)

    变量作用域:根据变量定义的位置,可将变量分为全局变量和局部变量. 全局变量:定义在函数外面的变量,可以在多个函数中进行访问,但不能执行赋值操作.如果有赋值语句,相当于创建了一个同名的局部变量: 局部变 ...

  9. python远程桌面控制_手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤

    配置说明 使用Pycharm 2020.1.1 professional 专业版.(据说只有专业版可以远程连接)如果不是专业的伙伴,可以用校园邮箱注册一个专业版,免费的哦! 步骤 1. 设置Conne ...

最新文章

  1. 虚拟机管理你的服务器,全面解析VMware的虚拟机管理解决方案
  2. 四轴飞行器1.1 Matlab 姿态显示
  3. initrd镜像文件的作用与制作
  4. eclipse配置java环境_Java工作环境的配置与Eclipse的安装过程
  5. 上下伸缩代码_CQRS之旅——旅程4(扩展和增强订单和注册限界上下文)
  6. java类加载及new对象的过程
  7. 12-1 定位(相对,绝对,固定)
  8. 【codevs2516】【BZOJ2461】符环,DP
  9. java 上传图片后没法立马显示出来_SpringMVC多个文件上传及上传后立即显示图片功能...
  10. 计算机的进制数思想在哪方面有应用,计算机应用技术问答题(一)
  11. 关于用data开头属性的取值
  12. 472. 连接词(每日一难phase2--day24)
  13. Vue中动态切换组件
  14. 高手UI设计师干货总结分享品牌LOGO设计的过程要求及方法
  15. 有哪些好用且免费的安全测试工具?
  16. css mix-blend,CSS混合模式mix-blend-mode/background-blend-mode简介
  17. 人工在线客服不在线怎么办
  18. 第一次有人把5G讲得这么简单明了!
  19. 无线网技术——复习(2)
  20. 华为HCIA-datacom 学习笔记17——IPv6基础

热门文章

  1. Source Insight 4.0与3.5的区别
  2. CSP认证201809-1 卖菜[C++题解]:遍历
  3. Matlab最短路学习
  4. matlab usewhitebg,我有一个matlab的程序运行出错,各位大神求救,很急啊
  5. mysql 日志的存放形式_mysql日志详细解析
  6. logback修改日志内容_巧用maven profile动态修改logback日志目录
  7. java实现layui分页_基于LayUI分页和LayUI laypage分页的使用示例
  8. 安卓项目打开有时候manifests不见了_【必看】暴力0鲁项目详细操作及玩法如何跳过广告,不分享群等...
  9. 数据增量更新定义_封面数据 | 爬虫技术与应用
  10. 学计算机用华硕电脑,请问华硕笔记本电脑什么型号比较好用,就商务办公?