Go学习第一章——开发环境安装以及快速入门(GoLand)
Go开发环境安装以及快速入门
- 一、环境配置
- 1.1 go开发工具
- 1.2 go sdk下载
- 3.1 go相关命令行
- 二、快速入门
- 2.1 创建项目
- 2.2 创建`.go`程序文件
- 2.3.配置 mod 的开启与关闭
- 2.4 用 GoLand 写第一份代码
- 2.5.代码静态检测(此部分非必要)
- 三、初步了解
- 3.1 代码解释以及编译
- 3.2 Golang执行流程
- 3.3 语法注意事项
- 3.4 注释
- 3.5 代码风格
- 3.6 API
官网:https://golang.org/
go sdk下载:https://golang.google.cn/dl/
golang中文社区:https://studygolang.com/dl
中文社区文档 https://studygolang.com/pkgdoc
一、环境配置
1.1 go开发工具
- goland
- IDEA golang插件
- vscode
推荐使用goland
GoLand官网下载:https://www.jetbrains.com/go/download/#section=windows
1.2 go sdk下载
下载安装后,windows上会自动添加到环境变量,如果使用goland,会默认找到sdk的位置。
使用Installer Windows 可以直接软件安装,快一些,方便,而且自动配置环境变量,如果想自己设置也可以
具体参考下面的是链接:
Go语言开发环境搭建详细教程+go常见bug合集
Go GOROOT 与 GOPATH 介绍
GOROOT:Go 语言安装根目录的路径,也就是 GO 语言的安装路径。
GOPATH:若干工作区目录的路径。是我们自己定义的工作空间。
GOBIN:GO 程序生成的可执行文件(executable file)的路径。
设置 GOPATH得作用
你可以把 GOPATH 简单理解成 Go 语言的工作目录,它的值是一个目录的路径,也可以是多个目录路径,每个目录都代表 Go 语言的一个工作区(workspace)。
我们需要利于这些工作区,去放置 Go 语言的源码文件(source file),以及安装(install)后的归档文件(archive file,也就是以“.a”为扩展名的文件)和可执行文件(executable file)。
3.1 go相关命令行
(1) 查看go sdk版本
go version
(2) go代码生成exe文件, 执行以下命令会将test.go在当前目录生成test.exe
go build test.go
(3) 直接运行结果,不生成exe文件
go run test.go
(4) 指定生成文件的名字
go build -o sever.exe test.go
(5) 命令行格式化代码
gofmt -w test.go
直接运行gofmt test.go只是显示格式化后的代码格式,不写道文件里面
(6) go doc 看api说明
查看内置函数delete的说明
go doc builtin.delete
二、快速入门
2.1 创建项目
这里使用GoLand作为开发工具讲解
选择我们的 New Project
,那么我们就会看到如下界面
选择 Go
项目,如果选择带有 GOPATH
标记的则表示将项目默认创建在你配置好的 GOPATH
空间下
在 GoLand 中,一个项目就可以作为一个工作空间,所以选择
Go
则表示要将这个新建的项目作为一个独立的工作空间进行开发
Location
: 表示当前项目的位置
GOROOT
: 表示你GO环境的开发包安装位置,这个如果在环境变量已经配置好的情况下会自动帮你填写,如果没配置建议先配置好环境变量。
Environment
: Go 的一些 mod 可能需要外网下载,因为一些不可描述的原因我们无法访问,因此可以通过配置 GOPROXY 代理来改变代理成国内的下载代理,这个可以暂时先不配置。
想写,可以直接填入:GOPROXY=https://goproxy.cn,direct
创建成功如下:
2.2 创建.go
程序文件
这里我们可以简单尝试一下:
- 创建
Simple application
会得到一个带有简单main
函数的文件,这是一个程序的入口
创建的好的代码如下:
2.3.配置 mod 的开启与关闭
在我们的本地环境中我们可以通过指令来配置 go mod 模块管理的开启与关闭,而在我们的 Goland 中我们也可以通过设置来改变 go mod 的启用,我们在使用 Goland 的时候可以开启 go mod
- Preferences ->Go ->Go Modules 进行设置,如下:
关于代理: 因我我们众所周知一些原因,所以代理可以修改为国内,方便获取资源,留下以下几种资源地址
注意:代理修改完,重启 GoLand 生效
阿里云:https://mirrors.aliyun.com/goproxy/
nexus 社区提供的:https://gonexus.dev
goproxy.io 的:https://goproxy.io/
官方提供的:https://proxy.golang.org
七牛云赞助支持的:https://goproxy.cn
是否使用 go mod 的区别:
- 开启mod:go env -w GO111MODULE=on ,会将包下载到 gopath 下的 pkg 下的 mod 文件夹中
- 关闭mod:go env -w GO111MODULE=off ,会将包下载到 gopath 下的 src 下
- go env GO111MODULE=auto 只有当前目录在 GOPATH/src 目录之外而且当前目录包含 go.mod 文件或者其子目录包含 go.mod文件才会启用rticle/details/128001422
2.4 用 GoLand 写第一份代码
在刚刚我们已经新建了一个带有 main
的 .go
文件,那么我们接下来就需要在 main()
中写下我们的第一份代码, Goland 是相对比较智能的,很多基础包不需要你去写 import
,你只需要直接写你要的工具模块,它就会自动帮你导入相关的模块。
- 点击运行,右上角的这个标志,或者,右键运行
- 运行结果:
2.5.代码静态检测(此部分非必要)
我们之前有说过,Go 语言对于代码的检测和格式是有自己官方的统一规范和自动化的,所以就减少了出现不同程序不同的代码风格导致相互之间可阅读性降低的问题。
使用 GoLand 编写 Go 代码时,可以配合 gofmt + goimports + golangci-lint 在保存时完成对代码的格式化和质量检测。
- 开启
go fmt:
在每次保存代码文件时自动格式化代码。
File > Settings > Tools > File Watchers > + > go fmt
- 开启
goimports
在每次保存代码时自动添加缺失的和删除未引用的包。
File > Settings > Tools > File Watchers > + > goimports
如果遇到 `tools` 工具没安装, `Goland` 则会提醒你安装
如果安装失败,则可能是国内代理的原因,请修改代理(这里不再重复赘述,可参考前一篇文章内容)
- **开启
golandci-lint:
** 开启 golangci-lint 可以对代码进行静态检查,比如报告函数行数超标、文件行数超标等来帮助规范代码
File > Settings > Tools > File Watchers > + > golangci-lint
- 工具安装完毕!!!
三、初步了解
3.1 代码解释以及编译
前面的代码每一行详解如下
下一步,我们进行编译
- 来到文件的源文件下
- 打开cmd,运行go build test.go ,然后会发现生成了一个.exe文件,可以直接运行,会发现输出对应的内容
3.2 Golang执行流程
执行流程分析:
上述两种执行流程的方式区别
- 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件
变大了很多。
-
如果我们先编译生成了可执行女件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行
-
如果我们是直接go run go源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。
-
go run运行时间明显要比第一种方式 长一点点
-
编译后的文件可以另外指定名字:
3.3 语法注意事项
(1)源文件以"go"为扩展名。
(2)程序的执行入口是main()函数。
(3)严格区分大小写。
(4)方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这也体现出Golang的简洁性。(其实可以自己写分号,例如:一行某一段结束价格分号,再接其他的也是OK的,这样相当于两条语句)
(5)Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错
(6)定义的变量或者import的包如果没有使用到,代码不能编译通过。
(7)大括号都是成对出现的,缺一不可
3.4 注释
Go支持c语言风格的**/* */块注释,也支持c++风格的//**行注释。行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码
(1)行注释 // GoLand快捷键:ctrl+/ 再按一次取消注释
(2)块注释(多行注释) / * */ GoLand快捷键:ctrl+shift+/ 再按一次取消注释
注意:块注释中不可以嵌套块注释
提示:官方推荐使用行注释 //
3.5 代码风格
-
注意缩进
- 向后缩进:tab
- 向前取消缩进:shift+tab
可以通过命令行实现:
-
gofmt test.go(仅展示数据,不改变原数据)
-
gofmt -w test.go(更改原代码的缩进情况)
**GoLand软件自带快捷键:Ctrl+Alt+L **
-
成对编程 {} () “” ‘’
-
运算符两边加空白
- 注释:官方推荐行注释//
- 以下代码是错误的:
-
行长约定:
一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅
- 错误方式:
- 正确方式(使用
,
进行拼接)
3.6 API
Go语言提供了大量的标准库,因此 google 公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法。官方位置:https://golang.org
Golang中文网在线标准库文档: https://studygolang.com/pkgdoc
函数对应的源码查看:
也可以使用离线API:这里略~~~~
97726997615)]
Go语言提供了大量的标准库,因此 google 公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法。官方位置:https://golang.org
Golang中文网在线标准库文档: https://studygolang.com/pkgdoc
[外链图片转存中…(img-XYf2WQpH-1697726997615)]函数对应的源码查看:
[外链图片转存中…(img-RMsNmwtC-1697726997615)]
也可以使用离线API:这里略~~~~
这样就成功入门啦,冲冲冲!!!!!!!!!!!!!!!!!!!!!!!!!!!!
相关文章:

Go学习第一章——开发环境安装以及快速入门(GoLand)
Go开发环境安装以及快速入门 一、环境配置1.1 go开发工具1.2 go sdk下载3.1 go相关命令行 二、快速入门2.1 创建项目2.2 创建.go程序文件2.3.配置 mod 的开启与关闭2.4 用 GoLand 写第一份代码2.5.代码静态检测(此部分非必要) 三、初步了解3.1 代码解释以…...

大数据学习(14)-Map Join和Common Join
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博>主哦&#x…...

Docker安装ES7.14和Kibana7.14(无账号密码)
一、Docker安装ES7.14.0 1、下载镜像 docker pull elasticsearch:7.14.0 2、docker安装7.14.0 mkdir -p /usr/local/elasticsearch/config mkdir -p /usr/local/elasticsearch/data chmod 777 -R /usr/local/elasticsearch/ echo "http.host: 0.0.0.0" >> /u…...

Zynq中断与AMP~双核串口环回之PS与PL通信
实现思路: 额外配置:通过PL配置计数器,向CPU0和CPU1发送硬中断。 1.串口中断CPU0,在中断中设置接收设置好字长的数据,如果这些数据的数值符合约定的命令,则关闭硬中断,并将这部分数据存入AxiLi…...

【一:实战开发testng的介绍】
目录 1、主要内容1.1、为啥要做接口测试1.2、接口自动化测试落地过程1.3、接口测试范围1.4、手工接口常用的工具1.5、自动化框架的设计 2、testng自动化测试框架基本测试1、基本注解2、忽略测试3、依赖测试4、超时测试5、异常测试6、通过xml文件参数测试7、通过data实现数据驱动…...

C现代方法(第9章)笔记——函数
文章目录 第9章 函数9.1 函数的定义和调用9.1.1 函数定义9.1.2 函数调用 9.2 函数声明9.3 实际参数9.3.1 实际参数的转换9.3.2 数组型实际参数9.3.3 变长数组形式参数(C99)9.3.4 在数组参数声明中使用static(C99)9.3.5 复合字面量 9.4 return语句9.5 程序终止9.5.1 exit函数 9.…...

【算法练习Day23】 复原 IP 地址子集子集 II
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 复原 IP 地址子集子集 II总…...

fastadmin框架token验证
在FastAdmin框架中,Token验证是一种常见的身份验证方法,用于确保用户请求的安全性和合法性。本文将介绍如何在FastAdmin框架中实现Token验证。 什么是Token验证? Token验证是一种基于令牌(Token)的身份验证方式。在这种方式下,用…...

了解 AI :了解 AI 方面的一些术语 (中英文对照)
本心、输入输出、结果 文章目录 了解 AI :了解 AI 方面的一些术语 (中英文对照)前言AI 方面的一些术语 (中英文对照)AI 方面的一些术语 (中英文对照) - 文字版弘扬爱国精神 了解 AI :…...

【Python学习笔记】对象、方法
1. 对象方法定义 对象通常都拥有属于自己的 方法(英文叫 method )。 对象的方法其实可以看成是对象所拥有的函数。也就是说 这个方法,是属于这个对象的函数。 调用对象的方法,和调用函数差不多,只要在前面加上 所属…...

企业IT资产设备折旧残值如何计算
环境: 企业/公司 IT资产 问题描述: 企业IT设备折旧残值如何计算? 解决方案: 1.按三年折旧 净值原值-月折旧额折旧月份 , 月折旧额原值(1-3%)/36 折旧月份ROUND(E2*(1-3%)/36,2) 2.净值E2-F2*G2...

Linux性能优化--性能工具:下一步是什么
13.0 概述 本章是对一些事情的思索,包括:Linux性能工具的当前状态,哪些仍需要改进以及为什么Linux是当前一个相当不错的进行性能调查的平台。 阅读本章后,你将能够: 了解Linux性能工具箱的漏洞,以及一些理…...

网工内推 | IT主管、高级网工,上市公司,必须持有HCIE认证
01 深圳市飞荣达科技股份有限公司 招聘岗位:高级网络工程师 职责描述: 1. 参与、负责集团公司IT基础技术架构的规划设计、实施及维护、性能优化,包括数据中心机房、网络架构、虚拟化平台、信息安全设备及灾备系统等; 2. 负责集团…...

bulldog 靶机
bulldog 信息搜集 存活检测 详细扫描 后台网页扫描 网页信息搜集 正在开发的如果你正在读这篇文章,你很可能是Bulldog Industries的承包商。恭喜你!我是你们的新老板,组长艾伦布鲁克。CEO解雇了整个开发团队和员工。因此,我们需要迅速招到一…...

如何借助边缘智能网关打造智慧城市便民驿站
智慧城市驿站是一类提供多样化便利服务的新型智能公共设施,通过融合物联网技术、边缘智能技术、新能源技术等,为城市居民整合提供休闲、购物、卫生、广告、安全等公共服务,进一步提升日常生活体验。本篇就为大家介绍如何基于边缘智能网关&…...

谈谈电商App的压测
背景 最近恰逢双十一,大大小小的电商app在双十一之前都会做一次压测,曾经在小公司工作的时候很想知道大公司是如何压测的,有什么高深的压测工具没,本文就来揭露一下 压测真相 在确认使用什么压测工具进行压测之前,我…...

VsCode修改侧边栏字体大小——用缩放的方法
缩放界面字体百分比(包括编辑器界面) 如果只修改文本编辑区的字体大小,可以在File -> Preferences -> Settings 中修改font的大小。但是侧边栏的字体不会改变,所以可以使用缩放的方法先修改整个界面的字体大小,…...

基于Java的农资采购销售管理系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...

【AIGC核心技术剖析】扩大富有表现力的人体姿势和形状估计SMPLer-X模型
富有表现力的人体姿势和形状估计 (EHPS) 将身体、手和面部运动捕捉与众多应用结合起来。尽管取得了令人鼓舞的进展,但当前最先进的方法仍然在很大程度上依赖于有限的训练数据集。在这项工作中,我们研究了将 EHPS 扩展到第一个通用基础模型(称为 SMPLer-X),以 ViT-Huge 作为…...

【C++面向对象】1. 类、对象
文章目录 【 1. 类 & 对象的定义 】1.1 类的定义1.2 对象的定义 【 2. 类的成员 】2.1 数据成员2.2 成员函数类的内部定义成员函数类的外部定义成员函数成员函数的访问实例 【 3. 类的访问修饰符 】3.1 public 公有成员3.2 private 私有成员3.3 protected 保护成员3.4 继承…...

PAM从入门到精通(十三)
接前一篇文章:PAM从入门到精通(十二) 本文参考: 《The Linux-PAM Application Developers Guide》 先再来重温一下PAM系统架构: 更加形象的形式: 五、主要函数详解 11. pam_open_session 概述&…...

Stable Diffusion WebUI几种解决手崩溃的方法
1. 添加与手相关负面提示词 如何提价提示词呢? 首先有一个embeddings模型文件bad-hands-5,我们可以去各个大模型网站去搜,我是在C站上面下载的。 附上C站地址:https://civitai.com/ 下载好之后,你需要将文件放入stable-diffusion-webui\embeddings目录中。位置如下所示…...

kr 第三阶段(一)16 位汇编
为什么要学习 16 位汇编? 16 位汇编包含了大部分 32 位汇编的知识点。有助于在学习内核的两种模式。 实模式:访问真实的物理内存保护模式:访问虚拟内存 有助于提升调试能力,调试命令与 OllyDbg 和 WinDebug 通用。可以学习实现反…...

power point导出pdf保留字体
在 slides 中用到非自带的字体,如 [1],想导出成 pdf 文件(因为导出成图,如 png,放大会蒙),并在别人电脑里也保留字体。除了让别人也装上相应字体,可以: 参考 [2]&#x…...

云务器迁移(腾讯云>华为云)
自己平时除了写些bug外还喜欢玩玩服务器,这不前几年买了一个域名,当时服务器买的是阿里云的,想着域名备案挺麻烦的就一直用着,只是在服务器到期后会重新购买其他运营商的(关键是续不起🤫) 这不最…...

[USACO11MAR] Brownie Slicing G题解(二分+二维前缀和+矩阵分割)
[USACO11MAR] Brownie Slicing G 题目地址 P3017 [USACO11MAR] Brownie Slicing G 思路 二分最大化最小值 切割思路: 一行一行进行切割,如果这一行可以切割出b块大于等于mid的块,就开始切割下一行 如果无法切割出b块,就把正在…...

【每日一题】—— B. Arrays Sum (Grakn Forces 2020)
🌏博客主页:PH_modest的博客主页 🚩当前专栏:每日一题 💌其他专栏: 🔴 每日反刍 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…...

XTU-OJ 1328-数码和
题目描述 一个10进制数n在2∼16进制下可以得到的不同的数码和,求在这些数码和中出现次数最多的数码和。 比如20, 进制2345678910111213141516数码10100202110403226242220191817161514数码和2424586421098765 其中数码和2和4分别出现了3次,为…...

混入组件 (mixin)
1 什么是混入以及作用 *混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。作用:主要作用是继承和封装…...

ubuntu18.04 RTX3060 rangnet++训练
代码链接: https://github.com/PRBonn/lidar-bonnetal 安装anaconda环境为 CUDA 11.0(11.1也可以) anaconda环境如下 numpy1.17.2 torchvision0.2.2 matplotlib2.2.3 tensorflow1.13.1 scipy0.19.1 pytorch1.7.1 vispy0.5.3 opencv_python…...