GoLang和GoLand的安装和配置

1. GoLang

1.1 特点介绍

Go 语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容 Go 语言:Go = C + Python , 说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发

  1. 从 C 语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和 C 语言一样的编译执行方式及弱化的指针。
  2. 引入包的概念,用于组织程序结构,Go 语言的一个文件都要归属于一个包,而不能单独存在。
  3. 垃圾回收机制,内存自动回收,不需开发人员管理。
  4. 天然并发 (重要特点)
    从语言层面支持并发,实现简单。goroutine,轻量级线程,可实现大并发处理,高效利用多核。基于 CPS 并发模型实现。
  5. 吸收了管道通信机制,形成 Go 语言特有的管道channel ,通过管道 channel , 可以实现不同的goroute之间的相互通信。
  6. 函数可以返回多个值。

1.2 Go语言的应用场景

Go语言目前在云计算、容器虚拟化、分布式存储、网络爬虫、运维开发、Web开发、服务端开发、区块链、IoT等领域都有所应用。

以前你使用 C 或者 C++ 做的那些事情,用 Go 来做很合适,例如日志处理、文件系统、监控系统等,Go语言天生支持并发,所以十分适合编写分布式爬虫及大数据处理,大量优秀的Web框架如Echo、Gin、Iris、beego等都是go开发的,而且 Go 内置的 net/http 包十分的优秀,目前非常受欢迎的kubernetes、docker等也都是Go语言开发的

Go语言在云计算、大数据、微服务、高并发领域应用应用非常广泛。Go语言由 Google公司开发,并于2009年开源,相比Java/python/c等语言,Go尤其擅长并发编程,性能堪比C语言,开发效率肩比Python, 被誉为“21世纪的C语言”。

1.3 下载安装

下载地址
在这里插入图片描述
然后一步步点击安装即可。

1.4 配置

需要新建两个环境变量配置

  • 一个是 GOROOT ,这个就是 Go 环境所在目录的配置。
  • 另一个是 GOPATH ,这个是 Go 项目的工作目录,你以后开发的代码就写在这个文件夹中

然后将新建的GOROOT配置到 Path 环境变量中去,在系统变量中找到 Path,点击编辑->新建,输入%GOROOT%\bin,点击确定。并将所有母窗口的确定全部点下,确保环境变量生效。

windows+R 输入 cmd 打开终端,输入go version,如果输出如下图所示,则安装成功。

#查看Go版本
go version#查看Go环境变量
go env

在这里插入图片描述
在这里插入图片描述

1.5 配置 GO111MODULE、GOPROXY、GOSUMDB

Go默认的GOPROXY的值是:GOPROXY=https://proxy.golang.org,direct。
这个goproxy在使用go get安装第三方库的时候会报错,导致无法下载成功,所以必须要修改一下。

比如改为:

https://goproxy.io,direct (七牛镜像)
https://mirrors.aliyun.com/goproxy(阿里云镜像)

修改命令:

#开启mod模式(项目管理需要用到)
go env -w GO111MODULE=on
#重新设置成七牛镜像源(推荐)或阿里镜像源(用原有的会比较慢)
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy#关闭包的MD5校验
go env -w GOSUMDB=off#查看环境变量
go env

在这里插入图片描述

至此GoLang的安装和配置到此结束。

2. GoLand

对于使用过IDEA来说,GoLand的上手估计不会很难,很多人推荐VSCode,但是相比较而言,我还是更喜欢GoLand,因为相比较来说,GoLand更加地智能。

具体下载安装我就不说了,直接去下面地址下载,一路傻瓜式点击即可。

GoLand

2.1 GOROOT,GOPATH,GO模块配置

如果你按照我上面的方式配置好GoLang,这块只需要检查下没啥问题即可。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2.2 配置代理源

在这里插入图片描述

2.3 下载项目启动测试

我们可以在gitee上下载一个开源项目,然后尝试着安装依赖

# 进入server文件夹
cd server# 使用 go mod 并安装go依赖包
go generate

这里我需要解释下,go mod也就是Go Modules,它是官方依赖管理工具,提供了一种在项目中管理外部依赖包的方式,包括版本控制、依赖解析和构建时的依赖下载,类似于JAVA下的Maven。
我们需要注意的是go generate它主要用于源代码生成,而不是直接管理模块依赖。

  • go generate 是一个辅助工具,用于触发自定义的代码生成任务。
  • 在源代码文件中使用 //go:generate 注释来指定需要执行的命令和参数,当运行 go generate 时,Go 工具链会查找并执行这些注释中的命令。

在这里插入图片描述
我们可以很清楚地看到,在我拉的项目的主方法中,利用了go generate来去统一执行所有的命令,我们也可以在平时的开发中仿照这样一种写法。

go mod常见的命令:

初始化模块:

go mod init [module-name]

该命令用于创建一个新的go.mod文件,初始化一个Go模块。它会定义模块的根目录和模块路径。如果不指定模块名,默认使用当前目录作为模块的根,并尝试从代码中推断模块路径。

下载依赖:

go mod download [modules...]

此命令用于下载指定的模块及其依赖项到本地缓存。如果未指定任何模块,则下载主模块的所有依赖。

更新并优化依赖关系:

go mod tidy

这个命令会根据当前源码中的导入声明自动添加新的依赖,并移除不再使用的依赖项。它确保go.mod和go.sum文件反映项目的真实需求。

将依赖复制到vendor目录:

go mod vendor

此命令会把项目所有构建时所需的依赖包拷贝到vendor目录下,使得即使没有网络连接或代理设置也可以进行构建。

验证模块依赖:

go mod verify

验证go.mod文件中列出的模块哈希值是否与go.sum中记录的哈希一致,确保依赖的安全性。

更换下载源:

go env -w GOPROXY=https://proxy.example.com

设置GOPROXY环境变量以更改依赖下载源。这允许开发者选择自定义或者镜像代理来加速模块下载或者解决访问问题。

构建时使用vendor目录:

go build -mod=vendor

当vendor目录存在时,这个标志告诉go build命令在构建过程中优先使用vendor目录下的依赖,而不是检查全局或本地模块缓存。

获取依赖详情:

go list -m all

列出项目所有直接和间接依赖的模块版本信息。

2.4 最后启动项目

在这里插入图片描述
在这里插入图片描述

或者执行

go build -o server main.go 

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

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

相关文章

Flutter canvas 画一条波浪线 进度条

之前用 Flutter Canvas 画过一个三角三角形,html 的 Canvas 也画过一次类似的, 今天用 Flutter Canvas 试了下 感觉差不多: html 版本 大致效果如下: 思路和 html 实现的类似: 也就是找出点的位置,使用二阶…

OCP NVME SSD规范解读-8.SMART日志要求-4

SMART-21:这段描述解释了一个与设备内部I/O操作非对齐相关的计数器功能。该计数器记录的是由NVMe SSD执行的、起始地址未按照设备内部间接寻址单元(IU,Indirection Unit)大小进行对齐的写入I/O操作数量。 “Alignment”指的是每次…

15EG使用vivado2023.1建立hello world工程

1:打开软件建立工程 2:使用vivado创建设计模块并生成bit文件 3:导出硬件平台,使用vitis建立工程 4:使用vitis创建应用程序项目 5:硬件设置与调试 1:打开软件建立工程 打开VIVADO2023.1 创建一个新的工程 输入项目名称和地址,下面那个选项为是否…

深度学习-自注意力机制

文字编码 one-hot编码,让模型自己去学习怎么进行编码 常见的输出 1.每个词都有一个输出值 2.每个句子输出一个值,情感分类 3.输入与输出长度不对应,翻译任务,生成任务。 RNN最早的语言处理 RNN解决的是模型去考虑前面的输入…

第38章 补充定义6 正交,紧性

继续之前讲的内容,之前的坐标开始进入到笛卡尔坐标了,这个笛卡尔其实是个半成品的东西,能用但是不够好用,通用性确实好,不过作为各种各样的空间的基础够用了, 还是需要用到点乘和纯量乘 基底(…

TS项目实战一:流淌的字符动画界面

使用ts实现虚拟世界,创建ts项目,并编写ts代码,使用tsc编译后直接加载到html界面,实现类似黑客帝国中的流淌的代码界面的效果。 源码下载地址:点击下载 讲解视频 TS实战项目一:数字流界面项目创建 TS实战项…

计算机设计大赛 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 🔥 优质…

useEffect的第二个参数

目录 1、第一个参数: 2、第二个参数: 2.1 不传值:无限循环 2.2 空数组作为依赖:执行一次 2.3 基本类型作为依赖:无限循环 2.4 引用类型 2.4.1 数组作为依赖:无限循环 2.4.2 函数作为依赖&#…

力扣(leetcode)第118题杨辉三角(Python)

118.杨辉三角 题目链接:118.杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] …

高光谱图像加载、归一化和增强(jupyter book)

1.获取高光谱图像:我用的是indian_pines的数据集,感兴趣的兄弟可以自行去官方网下载,gt的那个是它的标签哦,别搞错了。 2.图像加载: (1)从本地路径加载 import scipy.io as sio# 文件路径 fil…

乘积数量(c++题解)

题目描述 给定一个长度为 n 且不包含 0 的整数序列 。 请你计算以下两值: 使得 为负的索引对 l,r 的数量。使得 为正的索引对 l,r 的数量。 输入格式 第一行一个整数 。 第二行包含 个整数 。 输出格式 共一行,输出单个空格隔开的两个整数&a…

蓝桥杯---牌型种数

小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后…

排序链表---归并--链表OJ

https://leetcode.cn/problems/sort-list/submissions/499363940/?envTypestudy-plan-v2&envIdtop-100-liked 这里我们直接进阶,用时间复杂度O(nlogn),空间复杂度O(1),来解决。 对于归并,如果自上而下的话,空间复…

Collections集合工具类-JAVA

java.util.Collections:是个集合工具类它不是集合&#xff0c;而是集合的工具类 常用 API&#xff1a;注意 binarySearch 方法要求元素有序 方法实现&#xff1a; public class Test01 {public static void main(String[] args) {ArrayList<String>list1new ArrayList…

SpringBoot整合RabbitMq企业级使用封装

SpringBoot整合RabbitMq企业级使用封装 1、RabbitMq基础说明2、SpringBoot整合RabbitMq&#xff0c;以及RabbitMq的封装和高级用法2.1、pom.xml2.2、application.yml2.3、Mq配置类MessageQueueConfiguration2.3.1、代码2.3.2、设置replyTimeout2.3.3、publisher-confirm-type和…

【C语言】探索数据结构:单链表和双链表

目录 &#x1f4a1;链表的概念和结构 &#x1f4a1;链表的分类 &#x1f4a1;无头单向非循环链表&#xff08;单链表&#xff09;的实现 定义节点结构 单链表的尾部插入 单链表的头部插入 单链表的尾部删除 单链表的头部删除 在指定位置插入前数据 在指定位置之后插入数…

w3c标准

w3c&#xff08;万维网联盟&#xff09;&#xff1a;是一个公益基金组织&#xff0c;由互联网之父&#xff08;博纳斯李&#xff09;牵头组织起来的&#xff0c;用于专门维护互联网相关技术的发展和规范。 w3c标准&#xff0c;不是一个标准&#xff0c;而是一系列标准的集合&am…

人工智能基础-Numpy.array基本操作

基本属性 查看维度 x.ndim查看维度&#xff08;元组形式&#xff09; x.shape元素个数 x.size数据访问 子矩阵 内容同步修改 加是copy&#xff08;&#xff09;则不同步修改 Reshape 修改维度 参数为-1时自动识别个数 合并 np.concatenate([x, y])沿着列合并 np.co…

Springboot使用数据库连接池druid

springboot框架中可以使用druid进行数据库连接池&#xff0c;下面介绍druid在springboot中使用和参数配置介绍。 数据库连接池&#xff08;Druid&#xff09;是一种用于管理数据库连接的机制&#xff0c;其工作原理和常见使用方法如下&#xff1a; 原理&#xff1a;数据库连接…

kafka实现延迟队列

前言 首先说一下延迟队列这个东西&#xff0c;实际上实现他的方法有很多&#xff0c;kafka实现并不是一个最好的选择&#xff0c;例如redis的zset可以实现&#xff0c;rocketmq天然的可以实现&#xff0c;rabbitmq也可以实现。如果切换前几种方案成本高的情况下&#xff0c;那…