百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

带你学够浪:Go语言基础系列-环境配置和 Hello world

liebian365 2024-11-22 17:10 24 浏览 0 评论

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

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

最近工作上比较多的 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 :)\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 # 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 体验一下吧!今天的分享就到这,下一篇文章讲解基础语法。

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

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

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

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

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: