【启程Golang之旅】环境设置、工具安装与代码实践

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了解这门语言的基础知识和实用技巧。

目录

初识Golang

工具选择安装

环境安装与配置

语言编译特点


初识Golang

     go语言由谷歌传奇大牛 肯·汤普逊 于2007年设计创建,他也是B和C语言的发明者,2012年发布了开源版本1.0版本,go语言的设计初衷就是简单高效,这也是我们常常说go而不是golang的原因,其源代码编译成机器代码,意味着通常优于解释性语言,因go极快的编译速度而出名。

     尽管go是静态类型语言,但是其提供了执行类型的推断,来让语法更简洁和实用,此外其也具有包和模块系统,方便再项目开发期间导入导出代码,当然go还支持并行开发,能够指定哪些函数可以与其他函数同时运行,go语言的发展简史大致如下:

2007年,谷歌工程师RobPike,KenThompson和RobertGrisemer开始设计一门全新的语言,这是Go语言的最初原型。

2009年11月,Google将Go语言以开放源代码的方式向全球发布。

2015年8月,Go1.5版发布,本次更新中移除了"最后残余的c代码”

2017年2月,Go语言G01.8版发布。

2017年8月,Go语言Go1.9版发布。

2018年2月,Go语言Go1.10版发布。

2018年8月,Go语言Go1.11版发布。

2019年2月,Go语言Go1.12版发布。

2019年9月,Go语言Go1.13版发布。

2020年2月,Go语言Go1.14版发布。

2020年8月,Go语言Go1.15版发布。

一个go语言的应用程序,在运行的时候是不需要依赖外部库的,把执行时需要的所有库都打包到程序当中,所以go的程序比较大,如果import的包在程序中没有使用的话,程序是不允许编译的。

工具选择安装

开发go语言许多开发者工具都可以支持,如下:

1)visual studio code,Microsoft产品(简称VSCode):一个运行于Mac Os、Windows和Linux之上的,默认提供Go语言的语法高亮,安装Go语言插件,还可以支持智能提示,编译运行等功能。

2)SublimeText,可以免费使用,默认也支持Go代码语法高亮,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别

3)Vim:Vim是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用

4)Emacs:Emacs传说中的神器,她不仅仅是一个编辑器,因为功能强大,可称它为集成开发环境

5)Eclipse IDE工具,开源免费,并提供GoEclipse插件

6)LiteIDE,LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是中国人开发的。

7)JetBrains公司的产品:PhpStrom、WebStrom和PyCharm等IDE工具,都需要安装Go插件,还要一款特别开发go语言的工具,名称就叫做Golang。

这里我们选择JetBrains公司的Golang开发者工具进行后期的go语言的开发,其安装教程如下:

首先我们先打开工具下载 官网 ,点击Download下载即可,如下:

下载完成双击下载的exe文件进行安装,然后傻瓜式安装即可,这里安装的文件位置记得不要放在C盘即可,然后下载完成双击打开工具,这里安装一下中文的插件然后重启工具即可:

环境安装与配置

随着golang的发展衍生了许多版本,不同的项目可能用到的golang的版本不同,所以这里我们需要使用一个版本控制工具进行安装,当然你只安装一个版本也是可以的,打开 官网 ,进行傻瓜式的安装然后配置一下环境变量即可,这里不再赘述,本文讲解一下多版本管理的操作:

首先先确保你电脑之前没有下载过golang环境,然后点击 链接 ,进入github页面点击下载,这里根据自己电脑的系统情况进行安装,这里我拿window进行举例,点击下载:

压缩包解压之后,将其放置在自定义目录里面,尽量不要放在C盘,如下:

接下来打开系统中的环境变量,来配置环境,需要进行如下几点的配置:

设置镜像:国内无法自由访问官网,为确保使用现在安装go流程,设置国内镜像点,配置系统变量如下:

G_MIRROR = https://golang.google.cn/dl/

设置g的工作目录:这里放在我自定义的golang目录里面,配置系统变量如下:

G_HOME = D:\environment\golang

配置GOROOT:这个指向g工作目录下的go,g安装go版本后,会在这个路径下建立一个软链到versions目录下的指定版本,靠这个方法来控制当前的go版本,如果安装g之前已经安装过go了,需要修改GOROOT这个环境变量,配置系统变量如下:

GOROOT = %G_HOME%\go

支持自定义安装目录:开启所有的实验特性,配置支持自定义安装目录,并配置GOBIN:

G_EXPERIMENTAL = true
GOBIN = %GOROOT%\bin

配置path变量:设置 g.exe 目录(及 g.exe 文件所在目录),这样就可以使用命令行随时访问,并配置 golang 执行文件目录:

D:\environment\golang\g%GOBIN%

cmd测试: 配置完上面的环境变量之后,接下来我们打开终端输入 g 进行测试,如下说明成功:

输入 g env 可以看到g的环境变量配置;输入 g -v 可以看到当前g的版本信息:

以下是 g 工具常用的命令:

# 自动升级至最新版本
g self update
# 查询已安装的go版本
g ls
# 查询可供安装的所有go版本
g ls-remote
#查询当前可供安装的stable状态的go版本
g ls-remote stable
#安装指定go版本1.22.1
g install 1.22.1
# 切换至指定版本,需已下载
g use 1.22.1
# 卸载一个已安装的go版本
g uninstall 1.22.1

接下来我们开始给我们的电脑开始安装go环境,执行如下命令查看可以按钮的go环境:

这里我选择安装两个版本:1.22.1 和 1.16.3 ,如下:

回到我们自定义的安装go环境的目录,可以看到我们的版本都已经安装成功了:

现在我们cmd执行go version可以查看到我们当前使用的go环境版本如下:

环境工具安装配置好之后,接下来我们开始正式在编辑器中编写代码,如下:

package main // 声明文件所在的包,每个go文件必须有归属的包
import "fmt" // 引入程序需要的包,为了使用包里面封装好的函数func main() { // main主函数,程序的入口fmt.Println("Hel12lo, World!") // 在控制台打印输出一句话,双引号中的内容会原样输出
}

这里借助go包中的打印函数,在控制台输出 hello world 字样:

go语言的项目,需要有特定的目录结构进行管理,不能随便写,一个标准的go工程需要有三个目录,需要用一个名为GOPATH的环境变量来指定,如下,我们新建项目直接打开src文件即可:

src:存储项目的源代码

bin:编译之后的程序之后,使用标准命令go install之后存放位置

pkg:存放缓存包

语言编译特点

go语言是不区分平台的,在windows下面也可以编译一个程序,在linux下运行,需要两个环境变量来控制,如下:

GOOS设定运行的平台

mac:GOOS = darwin;linux:GOOS = linux;windows:GOOS = windows

GOARCH目标平台的体系构架

386:GOARCH = 386;amd64:GOARCH = amd64;arm:GOARCH = arm

执行 go env 可以看到我们在 windows 系统下运行的环境变量:

我们也可以将go编辑成linux下的运行的代码,我们可以通过命令 go build -o 命名文件 源文件,将一个go项目打包成一个exe文件,并且可以在windows系统下运行,如下:

如果想把文件编辑成linux系统下运行的可执行文件,通过改变goos可以操作,如下:

然后我们打包一个项目在windows运行肯定会出错的:

如果想把打包好的exe文件安装到一个目录上,我们就需要通过 go install 目录去执行,这里需要配置一下 GOBIN 环境变量的内容,修改一下其默认的位置, 这里我将其设置到如下目录:

执行如下命令之后

可以在设置文件夹下出现编译完成的exe文件,执行之后出现结果:

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

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

相关文章

【Web后端】MVC模式

1、简介 MVC模式,全称Model-View-Controller(模型-视图-控制器)模式,是一种软件设计典范,它将应用程序的用户界面(视图)和业务逻辑(模型)分离,同时提供了一个…

K8S内容

K8S介绍 1、故障迁移:当某一个node节点关机或挂掉后,node节点上的服务会自动转移到另一个node节点上,这个过程所有服务不中断。这是docker或普通云主机是不能做到的 2、资源调度:当node节点上的cpu、内存不够用的时候,可以扩充node节点&…

​​​【收录 Hello 算法】6.2 哈希冲突

目录 6.2 哈希冲突 6.2.1 链式地址 6.2.2 开放寻址 1. 线性探测 2. 平方探测 3. 多次哈希 6.2.3 编程语言的选择 6.2 哈希冲突 上一节提到,通常情况下哈希函数的输入空间远大于输出空间,因此理论上哈希冲突是不可避免的。比如&a…

LeetCode题练习与总结:不同的二叉搜索树--96

一、题目描述 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出&…

从需求角度介绍PasteSpider(K8S平替部署工具)

你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手! PasteSpider是一款使用c#编写的linux容器部署工具,简单易上手,非常节省资源,支持…

shell脚本实现linux系统自动化配置免密互信

目录 背景脚本功能脚本内容及使用方法 1.背景 进行linux自动化运维时需要先配置免密,但某些特定场景下,做了互信的节点需要取消免密,若集群庞大节点数量多时,节点两两之间做互信操作非常麻烦,比如有五个节点&#x…

C++——动态规划

公共子序列问题 ~待补充 最长公共子序列 对于两个字符串A和B,A的前i位和B的前j位的最大公共子序列必然是所求解的一部分,设dp[i][j]为串A前i位和B串前j位的最长公共子序列的长度,则所求答案为dp[n][m],其中n,m分别为…

微信小程序主体变更的操作教程

小程序迁移变更主体有什么作用?进行小程序主体迁移变更,那可是益处多多呀!比方说,能够解锁更多权限功能;在公司变更或注销时,还能保障账号的正常使用;此外,收购账号后,也…

详解xlsxwriter 操作Excel的常用API

我们知道可以通过pandas 对excel 中的数据进行处理分析,但是pandas本身对格式化数据方面提供了很少的支持,如果我们想对pandas进行数据分析后的数据进行格式化相关操作,我们可以使用xlsxwriter,本文就对xlsxwriter的常见excel格式…

Salesforce AI研究: 从奖励建模到在线RLHF工作流

摘要 该研究在本技术报告中介绍了在线迭代基于人类反馈的强化学习(Online Iterative Reinforcement Learning from Human Feedback, RLHF)的工作流程,在最近的大语言模型(Large Language Model, LLM)文献中,这被广泛报道为大幅优于其离线对应方法。然而,现有的开源RLHF项目仍然…

Android存储文件路径的区别

一、Android存储简介 Android系统分为内部存储和外部存储 从Android6.0开始不断在更新存储权限 外部存储路径的开头:storage/emulated/0 内部存储文件路径的开头:/data/user/0/应用的包名(packageName) 在设备上对应的目录为/data…

Linux的命名管道 共享内存

目录 命名管道 mkfifo函数 unlink函数 命名管道类 服务端 客户端 共享内存 shmget函数 ftok函数 key和shmid的区别 snprintf函数 ipcs指令 ipcrm指令 shmctl函数 shmat函数 void*做返回值 创建共享内存空间 服务端 客户端 命名管道 基本概念&#xff1…

笔记本黑屏,重新开机主板没有正常运作的解决办法

拆开笔记本后壳,打开看到主板,将主板上的这颗纽扣电池拆下来,如果是带连接线的(如下图),可以将接口处线头拔出,等1分钟再把线接上。 ------------- 以下是科普 首先,电脑主板上的这…

力扣例题(循环队列)

链接 . - 力扣(LeetCode) 描述 思路 我们使用数组来创建循环队列 数组的大小我们就额外对开辟一块空间 MyCircularQueue(k) 开辟一个结构体,存放队列的相关数据 分别为size,数组指针_a,起始位置head,结束位置tail 注意:我们…

移动端自动化测试工具 Appium 之持续集成

文章目录 一、背景二、前置条件三、代码部分1、pom.xml文件配置2、main入口代码 四、Jenkins 部分1、下载Jenkins2、安装插件3、job配置4、选择构建 五、工程目录六、报告示例七、总结 一、背景 持续集成是老生话谈的事情,用的好不好,看自己公司与使用场…

能播放SWF文件的FlashPlayer播放器

问题: 你是不是遇到了 flash 动画 放不了了? 以前的flash游戏玩不了了 在网上很难找到好用的,免费Flashplayer播放器, 找到的也没法保存.exe 以前买的课件放不了了 一打开就更新提示: 再不就是意外能打开了但【创建…

IBM Granite模型开源:推动软件开发领域的革新浪潮

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

高中数学:平面向量-加减运算

一、向量的加法运算 三角形法则(推荐) 两个或多个向量收尾相连的加法运算,用三角形法则 简便算法 首尾相连的多个向量,去掉中间点,就是最终的和。 也可以用三角形法则证明 向量加法交换律 向量加法结合律 平行四…

讲解SSM的xml文件

概述&#xff1a;这些配置文件很烦&#xff0c;建议直接复制粘贴 springMVC.xml文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XM…

【Image captioning】In Defense of Grid Features for Visual Question Answering实现流程

In Defense of Grid Features for Visual Question Answering实现流程 网格特征预训练代码 这是该论文的特征预训练代码发布: @InProceedings{jiang2020defense,title={In Defense of Grid Features for Visual Question Answering},author={Jiang, Huaizu and Misra, Ishan…