文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇)

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

最近工作上比较多的 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 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」有我给你准备的各种编程学习资料。文章每周持续更新,我们下期见!

带你学够浪:Go语言基础系列-环境配置和 Hello world的更多相关文章

  1. 带你学够浪:Go语言基础系列 - 8分钟学基础语法

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

  2. 带你学够浪:Go语言基础系列 - 8分钟学控制流语句

    ★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...

  3. 带你学够浪:Go语言基础系列 - 8分钟学复合类型

    ★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...

  4. 带你学够浪:Go语言基础系列 - 10分钟学方法和接口

    文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 对于一般的语言使用者来说 ,20% 的语言特性就能够满 ...

  5. SpringBoot基础系列-SpringBoot配置

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9990680.html SpringBoot基础系列-SpringBoot配置 概述 属性 ...

  6. 零基础学Python--------第2章 Python语言基础

    第2章  Python语言基础 2.1 Python语法特点 2.11注释 在Python中,通常包括3种类型的注释,分别是单行注释.多行注释和中文编码声明注释. 1.单行注释 在Python中,使用 ...

  7. go 语言开发1 环境配置和语言基础

    Go 语言环境配置 windows 环境变量: 设置 GOROOT (安装路径),GOPATH(工程目录) Path 中加入 %GOROOT%/bin 和 %GOPATH%/bin mac 环境变量: ...

  8. Android 开发基础及环境配置

    2011年买了第一部安卓操作系统的手机,当时势头正盛的HTC不可思议(incredible),当时的想法就是想学习下智能手机开发,但是由于各种原因,客观上是公司的项目太忙了,忙于项目管理.团队建设.客 ...

  9. Vue基础(环境配置、内部指令、全局API、选项、内置组件)

    1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...

随机推荐

  1. 设计模式之GOF23备忘录模式

    备忘录模式Memento 场景: -Word文档编辑时,电脑死机或者断电,再次打开时,word提醒恢复之前的文档 -文件的撤回 核心: -就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原 ...

  2. [hdu4599]期望DP

    思路:容易知道G(x)=6x,H(x)=6F(x).此题的关键是求出F(x)的通项,要求F(x)的通项,先建立递推式:F(x)=1/6 * (F(x-1)+1) + 5/6 * (F(x-1)+1+F ...

  3. 分布式项目配置工程,在项目间互通要先在linux下开启zookeeper

    一.编写配置文件 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http: ...

  4. AFNetworking 3.0 使用详解 和 源码解析实现原理

    AFN原理&& AFN如何使用RunLoop来实现的: 让你介绍一下AFN源码的理解,首先要说说封装里面主要做了那些重要的事情,有那些重要的类(XY题) 一.AFN的实现步骤: NSS ...

  5. .Net Core3.0 WebApi 项目框架搭建 二:API 文档神器 Swagger

    .Net Core3.0 WebApi 项目框架搭建:目录 为什么使用Swagger 随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.后端分离的形态,而且前端技术和后端技 ...

  6. Docker & Kubenetes 系列四:集群,扩容,升级,回滚

    本篇将会讲解应用部署到Kubenetes集群,集群副本集查看,集群自愈能力演示,集群扩容,滚动升级,以及回滚. 本篇是Docker&Kubenetes系列的第四篇,在前面的篇幅中,我们向Kub ...

  7. pt-summary pt-mysql-summary工具

    2个percona的工具还真挺好用的. pt-summary# Percona Toolkit System Summary Report ###################### Date | ...

  8. ios中fixed元素在滚动布局中的延时渲染问题

    在之前做的一个demo中,有个视图是内滚动的,里边有个bar用了fixed,不是fixed在最外层视图的顶部和底部,在微信/safari/chrome/其他浏览器app上都没出现问题. 然后今天,我把 ...

  9. String的正则函数

    String的正则函数: 查找敏感词: 4种情况 1. 查找一个固定的敏感词的位置i: var i=str.indexOf("敏感词",fromi) 在str中,从fromi位置开 ...

  10. python3.x 基础三:字符集问题

    总结了一张表,更详细信息百度百科: 序号 年份 编码 标准协会 特点 二进制长度 字符长度 表现 1 1967 ASCII 美国国家标准学会(American National Standard In ...