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

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

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

下载源码

你可以用系统自带的包管理工具比如 yumapt-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库功能。

PrintPrintln 都可用于打印输出,但是功能略有不同。可以看到我在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 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 属性配置可以设置程序启动调试的参数。

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

环境变量获取

命令行参数可以通过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 形式,注意都是字符串。

终端设置环境变量

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

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

export GOROOT=/usr/local/go

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

总结

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

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

原创不易,看到这里,如果在我这有一点点收获,就动动手指「转发」和「在看」是对我持续创作的最大支持。

delve 调试带参数_带你学够浪:Go语言基础系列-环境配置和 Hello world相关推荐

  1. 小程序点击调转带参数_带你走遍苏大的每个角落,校园导览小程序上线!

    精彩推荐 1. 招新 | 携手趁韶华,约你同做"校媒人"! 2. 迎新现场 | 今天,"小20"是苏大的主角 3. 苏州大学与亨通集团签订战略合作协议 钟楼.红 ...

  2. Python带*参数和带**参数:可变参数

    一.理论解释: *参数与**参数是Python参数中的重点知识,他们都被称为可变参数(任意参数),我们经常会在代码中看到*args.**kwargs 作为函数定义时:收集未匹配参数组成tuple或di ...

  3. 一起学Go吧! Go语言基础语法篇二

    文章目录 前言 Go 语言指针 Go语言结构体 Go语言切片(Slice) Go 语言范围(Range) Go 语言Map(集合) Go 语言类型转换 Go 语言接口 Go 错误处理 Go并发 通道( ...

  4. winform point数组带数值_带你学够浪:Go语言基础系列 - 8分钟学复合类型

    对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握.基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Gol ...

  5. python非可选参数_带plac的可选参数的默认值和非默认值 - python

    我的目标是使用plac在命令行中运行脚本,所有参数均为可选,并具有默认值. 不带参数:python my_script.py.它运行完美. 带有参数:python my_script.py -r &q ...

  6. 页面url带参数_微信小程序云开发教程微信小程序的JS高级页面间数据传递

    同学们大家好,我是小伊同学,上一节课我们讲解了全局数据的读写方法,那么在页面间同样需要数据交互,今天我们就来学习这部分内容. 在微信小程序中,我们常常需要将数据在页面之间进行传递,比如用户的身份信息, ...

  7. 使用axios发送请求(不带参数和带参数)和使用mockjs

    一.使用axios获取后端数据并使用(不带参数) 1.对axios进行封装 network/request.js import axios from 'axios' import nprogress ...

  8. C语言带参数的回调函数怎么传参,C语言如何实现回调函数

    回调函数就是就是通过一个统一的接口实现不同的功能,C语言中的回调函数就是在代码中根据所传的参数不同而调用不同的回调函数 回调函数是一个程序员不能显式调用的函数:通过将回调函数的地址传给调用者从而实现调 ...

  9. html文件可以带参数,一个带参数的URL指向一个静态文件后面的参数有没有作用?_html/css_WEB-ITnose...

    http://127.0.0.1/index.html?param1=asdfasdf&param2=asdfasdfa 请问?param1=asdfasdf&param2=asdfa ...

最新文章

  1. 电商退货处理流程_多个退货单
  2. 腾讯公布 23 年前第一间办公室照片
  3. c语言是以文件为单位编译,c语言从头开始(三:编译器工作原理) (我们还可以自己编写头文件后缀是xx.h并把它当前代码文件所在目录我们要用就可以直接通过下面代码使用)...
  4. 英语口语 week11 Tuesday
  5. OpenCV中基本数据结构(5)_RotatedRect
  6. Python实现计算机屏幕任意区域截图
  7. Exp6 信息收集与漏洞扫描
  8. 解决print spooler打印服务自动停止的过程记录
  9. MediaFormat api详解
  10. pyinstaller打包py文件为单个文件或多个文件
  11. basic计算机编程基础,计算机编程基础(Visual Basic)
  12. 挂号显示服务器异常是什么情况,支付宝挂号总失败是什么原因呢?
  13. rk3288 8080lcd时序分析和TFT-RGB接口
  14. 【notes|奇点临近】chapter1
  15. 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointMission
  16. 网络控制软件国内外引发争议
  17. opencv仿射变换:平移,缩放和旋转
  18. 伯克利大学计算机专业博士项目,2020年加州大学伯克利分校博士热门专业
  19. 每周迭代进度表(进度墙)
  20. 【ZZULIOJ】1107: 回文数猜想(函数专题)

热门文章

  1. 一文详解「队列」,手撸队列的3种方法!
  2. Java 邮箱判断 正则表达式
  3. python设置本机IP地址、子网掩码、DNS,获取本机IP地址、子网掩码、DNS、MAC
  4. mysql数据存储和函数_MySQL数据库——存储和函数
  5. html显示线条流动效果,css3实现线条流动效果
  6. linux socat rpm,RabbitMQ系列(三)RabbitMQ Server的安装(基于Linux RPM)
  7. python求123逆序数_应用Python来计算排列中的逆序数个数
  8. java分页代码思路,记录--java 分页 思路 (hibernate关键代码)
  9. Win7性能信息和工具在哪打开
  10. 最新版谷歌浏览器Chrome45版本性能提升