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

feaeacffbfe9294c97492dd70ac5db36.png

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

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

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

下载源码

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

b471c6982ae6fff14d5d9fb62516a0bb.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 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 开发插件,如下,点他安装。

b15a68abc8d6896798412263d2d3a853.png

接着还会出现如下的提示,是因为缺少其他 Go 开发相关插件,点 install all 全都装上就行。

e08700cd7ddfb1fc6273e9b1541b6c2c.png

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启动调试,编辑与调试控制台输出如下:

aec0573d89995db6b06b1fd180304bce.png

命令行参数获取

命令行参数可以通过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 属性配置可以设置程序启动调试的参数。

21687c09fa76cbd39294a0c437e02d74.png

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

f15095268713d59c82059ebd6a29dfcb.png

环境变量获取

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

7551d80c9227a11de2c14ca72fa20669.png

终端设置环境变量

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

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

export GOROOT=/usr/local/go

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

总结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语音 视频 质量测试软件,DxOMARK官方发布视频,了解如何测试手机音频质量

IT之家10月11日消息 北京时间昨日晚间,DxOMARK正式推出了手机音频评分系统DXOMARK Audio,官方也发布视频告诉大家DXOMARK如何测试手机音频质量。视频中展示了录制环节,包括自拍视频、语音消息、播放视频、游戏、播放音乐等。通过三个步骤测试…

计算机拆卸组装过程,如何拆卸并重新组装笔记本电脑

如何拆卸并重新组装笔记本电脑当您的笔记本电脑需要更换、升级硬件或者清理内部灰尘时,您需要知道如何进行拆卸并重装,跟着本文一起了解是如何进行的吧。详细了解如何安全处理旧组件或笔记本电脑。拆卸笔记本电脑本文只是通用性的拆卸指南,具…

登录服务器用户账户限制,当用户有登录到的限制时,远程桌面登录报错的解决...

------老朱 2015.3.6一客户对普通域用户能够登录到的计算机有着严格的限制,即在用户账户中进行了登录到的设置,比如张三只能登录到张三的电脑,但对服务器账户没有限制,现在准备限制服务器账户能够登录到的服务器,按原来…

js在wap端获取定位_iPhone 定位服务,没用的都关掉

iOS 13 系统带来了很多新功能,同时对用户的隐私保护也进行了再度加强和优化。比如和用户隐私息息相关的定位服务,苹果在「始终」和「永不」之外,又加入了「使用 App 期间」这个更人性化的选项,应用只有在使用期间才会获取你的位置…

服务器系统日志6008,DELL服务器宕机事件6008

在DELL服务器上安装了windows server 2008 r2 64位标准版,客户在该操作系统上安装了自己开发的视频监控软件。服务器在运行一段时间后,会出现如下情况:(事件ID6008)1。机器硬件没有报错,但是无法Ping通,不能登录远程桌…

java 获取内存大小_JVM面试题扩展:Java代码在JVM中的执行流程

代码示例:public class Test { // 常量 public static final String MAN_SEX_TYPE "man"; // 静态变量 public static String WOMAN_SEX_TYPE "woman"; public static void main(String[] args) { People people …

idea数据库反向生成实体类_asp.net core 系列 21 EF现有数据库进行反向工程

一.概述在上篇中使用EF基于数据模型创建数据库, 本篇继续使用 EF 基于数据库创建数据模型。 实现对已有数据库进行反向工程,来构建数据访问的 ASP.NET Core MVC 应用程序。已有数据库使用上篇的EFGetStarted.AspNetCore.NewDb库。这里还是使用Visual Stu…

名爵如何解除限速_价格不高却乐趣十足,全新一代名爵6有多大惊喜

紧凑型轿车市场一直是各大车企的兵家必争,激烈的市场竞争也促成了很多紧凑型级别的细分市场,而紧凑型运动轿车则一直是消费者最为关注的一类产品。全新一代名爵6究竟有着什么表现,它能否在激烈竞争中取胜,运动调校上又有何等功底&…

管理服务器文件绿色版本,Services.msc服务器文件官方版

Services.msc是一款能够让我们对Windows系统服务策略进行快速管理和处理的工具,主要用于是适应于启动、终止并设置Windows服务的管理策略,该文件使用也是比较简单,软件简单又实用,让我们对相关进行快速管理,有需要的朋…

e2140服务器性能,4000 还是E2140?两大人气CPU对决

4000 还是E2140?两大人气CPU对决互联网 发布时间:2009-04-21 01:31:37 作者:佚名 我要评论今夏攒机,双核处理器无疑是网友们的第一选择。由于Intel和AMD的大力推广,双核处理器的价格目前已经跌到了一个大众消费…

12306能删候补订单记录_「实用」官方“捡漏”神器来了!12306铁路候补购票服务正式上线!...

准备购买火车票的小伙伴注意啦!中国铁路总公司说,5月22日起,铁路12306网站(含手机客户端)在前期试点的基础上,将铁路候补购票服务扩大到所有旅客列车。候补购票如何操作?怎么提交订单?如何添加“车次席别”…

联想平板刷机机器人_消费终端年出货量破1.2亿,杨元庆:联想是智能化转型的赋能者...

“科技是我们‘在危机中育先机、于变局中开新局’可以依赖的力量。联想一直在用实际行动为推动‘智慧经济’的增长,为构建“双循环”的新发展格局做贡献。”文丨《中国企业家》记者 刘哲铭编辑丨李薇图片来源丨中企图库一座青砖黑瓦的古城里,绿水萦回&am…

查询已有链表的hashmap_面试官再问你 HashMap 底层原理,就把这篇文章甩给他看...

前言HashMap 源码和底层原理在现在面试中是必问的。因此,我们非常有必要搞清楚它的底层实现和思想,才能在面试中对答如流,跟面试官大战三百回合。文章较长,介绍了很多原理性的问题,希望对你有所帮助~目录本篇文章主要包…

js 获取url问号前_收下这波 JS 技巧,从此少加班

各种业务开发都离不开对数据的处理,然而遇到的很多数据都是不好处理的。这个时候就需要寻求搜索引擎的帮助。这种方法效率是非常低下的,而且根据作者的个性不能保证其对自己的口味。因此这篇文字包含了一份JS 常用业务函数手册,例如时间格式的…

底层实现_Java AOP的底层实现原理

AOP用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等。AOP实现的关键,在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代…

lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?

相信不少同学都在初学计算机之时,都被ASCII,Unicode和UFT-8等字符编码格式 搞得焦头烂额,这玩意儿到底是啥,区别是啥,为啥有这么多?反正我刚学的时候纯粹是囫囵吞枣,为了考试潦草背一背&#xf…

git配置用户信息_git系列教程(4)-单用户配置

一般新手都会使用一个用户,要么是github,要么是gitee本地配置上个文档已经讲过本地配置,在这里就不赘述了连接github或者gitee生成ssh公钥ssh-keygen -t rsa -C "emailexample.com" 三次会车即可生成ssh key找id_rsa.pub文件mac或…

32 引脚_函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频方波

void Time0_serve(void ) interrupt 1 using 1 {TH0(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法TL0(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法sound!sound; //将P3.7引脚取反,输出音频方波}/************************…

重定向地址_JavaWeb - Servlet:重定向和转发,状态管理

Servlet JDBC 应用在 Servlet 中可以使用 JDBC 技术访问数据库,常见功能如下:查询 DB 数据,然后生成显示页面,例如:列表显示功能。接收请求参数,然后对 DB 操作,例如:注册、登录、修…

摸底谷歌Gemini:CMU全面测评,Gemini Pro不敌GPT 3.5 Turbo

谷歌的 Gemini 到底几斤几两?和 OpenAI 的 GPT 模型相比表现如何?CMU 这篇论文测明白了。 前段时间,谷歌发布了对标 OpenAI GPT 模型的竞品 ——Gemini。这个大模型共有三个版本 ——Ultra(能力最强)、Pro 和 Nano。研…