Go学习第一章——开发环境安装以及快速入门(GoLand)

news2025/1/16 15:57:51

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 代码风格
  1. 注意缩进

    • 向后缩进:tab
    • 向前取消缩进:shift+tab

    可以通过命令行实现:

    • gofmt test.go(仅展示数据,不改变原数据)

    • gofmt -w test.go(更改原代码的缩进情况)

    **GoLand软件自带快捷键:Ctrl+Alt+L **

  2. 成对编程 {} () “” ‘’

  3. 运算符两边加空白

在这里插入图片描述

  1. 注释:官方推荐行注释//
  2. 以下代码是错误的:

在这里插入图片描述

  1. 行长约定:

    一行最长不超过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:这里略~~~~

这样就成功入门啦,冲冲冲!!!!!!!!!!!!!!!!!!!!!!!!!!!!

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

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

相关文章

设计模式:单例模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

大家好!本节主要介绍设计模式中的单例模式。 简介: 单例模式,它是一种常用的软件设计模式,它属于创建类型。单例模式的主要目的是确保一个类仅有一个实例,并提供一个全局访问点。 在单例模式中,一个类只有…

python控制Windows桌面程序自动化模块uiautomation

github仓库地址:GitHub - yinkaisheng/Python-UIAutomation-for-Windows: (Donot use 3.7.6,3.8.1):snake:Python 3 wrapper of Microsoft UIAutomation. Support UIAutomation for MFC, WindowsForm, WPF, Modern UI(Metro UI), Qt, IE, Firefox, Chrome ... uiaut…

【OJ比赛日历】快周末了,不来一场比赛吗? #10.21-10.27 #11场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2023-10-21(周六) #2场比赛2023-10-22…

硬件成本节省60%,四川华迪基于OceanBase的健康大数据数仓建设实践

导语:本文为四川华迪数据计算平台使用 OceanBase 替代 Hadoop 的实践,验证了 OceanBase 在性能和存储成本方面的优势:节省了 60% 的硬件成本,并将运维工作大幅减少,从 Hadoop 海量组件中释放出来;一套系统处…

【Python】文件操作

一、文件的编码 思考:计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢? 答案:使用编码技术( 密码本)将内容翻译成0和1存入 编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二…

2022年下半年 软件设计师 上午试卷(41题—75题)

UML活动图用于建模 (41) 。以下活动图中,活动A1之后,可能的活动执行序列顺序是 (42) 。 (41) A. 系统在它的周边环境的语境中所提供的外部可见服务 B. 某一时刻一组对象以及它们之间…

【代码随想录】算法训练营 第七天 第三章 哈希表 Part 2

454. 四数相加 题目 思路 这道题相当于是两数相加的加强版,其实大体思路是一致的,只不过这道题里先把四个数组中的数两两相加,把和作为map的key值,把和出现的次数作为value,这样先遍历完前两个数组,后面再…

nginx平滑升级添加echo模块、localtion配置、rewrite配置

nginx平滑升级添加echo模块、location配置、rewrite配置 文章目录 nginx平滑升级添加echo模块、location配置、rewrite配置1.环境说明:2.nginx平滑升级原理:3.平滑升级nginx,并添加echo模块3.1.查看当前nginx版本以及老版本编译参数信息3.2.下…

【LeetCode-数组】--搜索插入位置

搜索插入位置 class Solution {public int searchInsert(int[] nums, int target) {int n nums.length;int left 0,right n-1;while(left < right){int mid (left right) / 2;if(nums[mid] target){return mid;}else if(nums[mid] > target){right mid - 1;}else…

【一:实战开发testng的介绍】

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

边写代码边学习之mlflow

1. 简介 MLflow 是一个多功能、可扩展的开源平台&#xff0c;用于管理整个机器学习生命周期的工作流程和工件。 它与许多流行的 ML 库内置集成&#xff0c;但可以与任何库、算法或部署工具一起使用。 它被设计为可扩展的&#xff0c;因此您可以编写插件来支持新的工作流程、库和…

Go学习第二章——变量与数据类型

Go变量与数据类型 1 变量1.1 变量概念1.2 变量的使用步骤1.3 变量的注意事项1.4 ""的使用 2 数据类型介绍3 整数类型3.1 有符号整数类型3.2 无符号整数类型3.3 其他整数类型3.4 整型的使用细节 4 小数类型/浮点型4.1 浮点型的分类4.2 简单使用 5 字符类型5.1 字符类型…

【LeetCode】 412. Fizz Buzz

题目链接 文章目录 Python3 【O(n) O(1)】C.emplace_back() 【C 11 之后】 Python3 【O(n) O(1)】 初始版本 class Solution:def fizzBuzz(self, n: int) -> List[str]:ans []for i in range(1, n1):if i % 5 0 and i % 3 0:ans.append("FizzBuzz")elif i % …

【三:Mock服务的使用】

目录 1、工具包2、mock的demo1、get请求2、post请求3、带cookies的请求4、带请求头的请求5、请求重定向 1、工具包 1、&#xff1a;服务包的下载 moco-runner-0.11.0-standalone.jar 下载 2、&#xff1a;运行命令java -jar ./moco-runner-0.11.0-standalone.jar http -p 888…

【Qt控件之微调框、进度条】QSpinBox、QDoubleSpinBox、QDial、QProgressBar介绍及使用

概述 QSpinBox类提供了一个微调框小部件。 QSpinBox适用于处理整数和离散的值集&#xff08;例如&#xff0c;月份名称&#xff09;&#xff1b;对于浮点数值&#xff0c;请使用QDoubleSpinBox。 QSpinBox允许用户通过点击上下按钮或按键盘上的上下箭头来增加/减少当前显示的值…

【交互式分割】——数据可视化

ritm, 交互式分割 数据可视化 数据包括一张图片 正样本点 负样本点 二分类的mask标签 如何模拟多次点击的迭代过程&#xff1f;

ubuntu18.04 RTX3060 rangnet++训练

代码链接&#xff1a; https://github.com/PRBonn/lidar-bonnetal 安装anaconda环境为 CUDA 11.0&#xff08;11.1也可以&#xff09; anaconda环境如下 numpy1.17.2 torchvision0.2.2 matplotlib2.2.3 tensorflow1.13.1 scipy0.19.1 pytorch1.7.1 vispy0.5.3 opencv_python…

【Qt控件之QListWidget】介绍及使用,利用QListWidget、QToolButton、和布局控件实现抽屉式组合控件

概述 QListWidget类提供了基于项目的列表小部件。 QListWidget是一个方便的类&#xff0c;类似于QListView提供的列表视图&#xff0c;但使用经典的基于项目的接口来添加和删除项目。QListWidget使用内部模型来管理列表中的每个QListWidgetItem。 对于更灵活的列表视图小部件…

DVWA-impossible代码审计

文章目录 DVWA靶场—impossible代码审计1.暴力破解&#xff08;Brute Force&#xff09;1.1 代码审计1.2 总结 2.命令注入&#xff08;Command Injection&#xff09;2.1 代码审计2.2 总结 3.跨站请求伪造&#xff08;CSRF&#xff09;3.1 代码审计3.2 总结 4.文件包含漏洞&…

数据挖掘原理与算法

一、什么是闭合项集? Close算法对Apriori算法的改进在什么地方? 闭合项集&#xff1a;就是指一个项集x&#xff0c;它的直接超集的支持度计数都不等于它本身的支持度计数。 改进的地方&#xff1a; 改进方向&#xff1a; 加速频繁项目集合的生成&#xff0c;减少数据库库的扫…