GoLang和GoLand的安装和配置

news2024/12/23 20:02:36

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.coloradmin.cn/o/1422749.html

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

相关文章

编程实战实例分享,棋牌室计时计费管理系统软件教程

编程实战实例分享,棋牌室计时计费管理系统软件教程 一、前言 以下编程实例以 佳易王棋牌计时计费软件V17.8为例说明 1、开始计时和等待中,图片自动识别,自动匹配 2、开始计时后,系统记录开始时间,并直观显示所用的时…

开源项目MessageNest打造个性化消息推送平台多种通知方式

今天介绍一个开源项目,Message Nest - 可以打造个性化消息推送平台,整合邮件、钉钉、企业微信等多种通知方式。定制你的消息,让通知方式更灵活多样。 开源地址: https://github.com/engigu/Message-Push-Nest 测试平台 系统&am…

网安人必看!CISP家族顶流证书攻略

网络安全已成为当今的热门领域,证书在职业发展中的重要性不言而喻。但是,证书市场五花八门,选择适合自己的证书可是个大问题。别担心,今天我们就来聊聊CISP家族的几个热门认证,让你在网络安全领域的发展更加顺利&#…

Android存储系统基础知识

英文原版链接→ Android存储系统概览图(图片模糊的话请拖动图片至新标签页打开): 从 Android 的角度来看 → 内部存储和 → 外部存储: 内部存储 内部存储只能通过已取得 root 权限的设备进行访问。 应用程序包保存在:…

家政小程序开发

随着人民生活水平的提高,我国老龄化日益增加,越来越多的家庭对家政服务需求也日益提升。目前,家政服务业已经成为了人们日常生活中不可缺少的一部分,家政服务市场具有较大的发展潜力。 近几年,家政服务市场规模呈快速…

驱动开发KMDF编译时:cannot open sourcefile “device.tmh“

有人说 设置项目的 WPP Tracing -> 设置 "Run Wpp Tracing" 为 YES,但是属性页压根没有这玩意啊?咋回事呢? 别人的工程属性页是这样的,这是为什么?

IT运维如何帮助企业降本增效?

IT监控运维管理技术发展应用和趋势 1、智能运维 随着人工智能和大数据技术的发展,智能运维将成为IT监控运维管理的重要趋势。通过利用机器学习、深度学习等技术,实现对IT系统的自动化监控、故障预测和智能维护,提高运维效率和质量。 2、容…

数字化转型对企业发展有哪些帮助?

数字化转型利用技术增强流程、运营和客户体验,在业务发展中发挥着至关重要的作用。以下是数字化转型促进企业发展的一些助力: 1.提高效率和生产力: 日常任务和流程的自动化有助于简化操作,减少完成它们所需的时间和精力。数字工…

瑞_数据结构与算法_红黑树

文章目录 1 什么是红黑树1.1 红黑树的背景1.2 红黑树的特性 ★★★ 2 红黑树的Java实现2.1 红黑树颜色枚举类Color2.2 红黑树节点类Node2.2.1 实现判断是否是左孩子方法isLeftChild()2.2.2 实现查找叔叔节点方法uncle()2.2.3 实现查找兄弟节点方法sibling() 2.3 红黑树类RedBla…

《Pandas 简易速速上手小册》第1章:Pandas入门(2024 最新版)

文章目录 1.1 Pandas 简介1.1.1 基础知识1.1.2 案例:气候变化数据分析1.1.3 拓展案例一:金融市场分析1.1.4 拓展案例二:社交媒体情感分析 1.2 安装和配置 Pandas1.2.1 基础知识1.2.2 案例:个人财务管理1.2.3 拓展案例一&#xff1…

Qt之QLabel介绍

概述 QLabel是QT界面中的标签类,它从QFrame下继承,QLabel 类代表标签,它是一个用于显示文本或图像的窗口部件。我们主要介绍一下QLabel的一些简单的使用。 设置颜色背景色和字体的颜色大小 字体及颜色 设置文字使用的是setText函数。 QStri…

linux中常用的命令

一:tree命令 (码字不易,关注一下吧,w~~w) 以树状形式查看指定目录内容。 tree --树状显示当前目录下的文件信息。 tree 目录 --树状显示指定目录下的文件信息。 注意: tree只能查看目录内容,不能…

如何抠图换背景?分享6个不能错过的工具!

在数字化时代,抠图换背景已经成为了一种常见的图像处理需求。无论是出于商业宣传、个人创作还是日常生活分享的需要,抠图换背景都能帮助我们创造出更具视觉冲击力、更富有个性的图片。那么,如何进行抠图换背景呢?又有哪些工具可以…

云计算HCIE备考经验分享

大家好,我是来自深圳信息职业技术学院22级鲲鹏3-1班的刘同学,在2023年9月19日成功通过了华为云计算HCIE认证,并且取得了A的成绩。下面把我的考证经验分享给大家。 转专业进鲲鹏班考HCIE 大一上学期的时候,在上Linux课程的时候&…

2024新鲜出炉 Java集合常见面试题总结(上)

2024新鲜出炉 Java集合常见面试题总结(上) 文章目录 2024新鲜出炉 Java集合常见面试题总结(上)集合概述Java 集合概览说说 List, Set, Queue, Map 四者的区别?集合框架底层数据结构总结ListSetQueueMap 如何选用集合?为什么要使用集合? ListArrayList 和…

MySql 慢SQL配置,查询,处理

一.慢SQL配置相关 1.查看慢SQL是否开启 执行下面命令查看是否开启慢SQL show variables like %slow_query_log; 复制代码 OFF: 未开启ON: 2.打开慢SQL配置 执行下面的命令开启慢查询日志 set global slow_query_logON; 复制代码 3.修改慢查询阈值 前面介绍了SQL执行到达了…

SD-WAN和专线混合组网:企业出海网络解决方案

目前,有很多国内企业涉足海外业务,如跨境电商、游戏、社交网络、区块链等。都会使用海外服务器。同时,这些企业在国内还有自己的机房,IDC或者使用国内其他云厂商的机房。如果他们想要相互通信或传输数据该怎么办?在成本…

【数据结构】链表的一些面试题

简单不先于复杂,而是在复杂之后。 链表面试题 删除链表中等于给定值 val 的所有结点。OJ链接 //1.常规方法struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* cur head, *prev NULL;while(cur){if(cur->val val){//1.头删/…

WPF入门到跪下 第十一章 Prism(五)IOC的依赖注入

IOC的依赖注入 一、构造函数方式的依赖注入 以项目启动时MainWindowViewModel的依赖注入为例,默认情况下Prism框架的项目,在打开窗口时会自动匹配主窗口的视图模型类(PrismApplication启动),这里是MainWindowViewMod…

外汇天眼:纽约总检察长起诉花旗银行,指责其未能保护欺诈受害者

纽约总检察长莉蒂西亚詹姆斯今天起诉花旗银行,指责其未能保护并拒绝偿还欺诈受害者。该诉讼声称,花旗银行没有实施强有力的在线保护措施来阻止未经授权的账户劫持,误导账户持有人关于账户被黑客攻击并且资金被盗后的权利,并非法地…