当前位置: 首页 > news >正文

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 

相关文章:

GoLang和GoLand的安装和配置

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

BGAD文章复现笔记-1

文章名:《Explicit Boundary Guided Semi-Push-Pull Contrastive Learning for Supervised Anomaly Detection》 原作者代码:https://github.com/xcyao00/BGAD 复现过程: 系统Ubuntu22.04, PyTorch1.12.1,python3.9 下载原作者…...

【EI会议推荐】第六届下一代数据驱动网络国际学术会议(NGDN 2024)

第六届下一代数据驱动网络国际学术会议(NGDN 2024) The Sixth International Conference on Next Generation Data-driven Networks 2024年4月26-28日 | 中国沈阳 *NGDN 2024已进入中国学术会议在线推荐列表:Click 基于前几届在英国埃克塞…...

聊聊java中的Eureka和Nacos

本文主要来自于黑马课程中 1.提供者与消费者 在服务调用关系中,会有两个不同的角色: 服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) 服务消费者:一次业务中&#xff0…...

系统架构设计师-21年-上午试题

系统架构设计师-21年-上午试题 更多软考资料 https://ruankao.blog.csdn.net/ 1 ~ 10 1 前趋图(Precedence Graph)是一个有向无环图,记为:→{(Pi,Pj)|Pi must complete before Pj may strat},假设系统中进程P{P1,P2,P3&#xf…...

数据库MySQL查询设计||给定四个关联表,其定义和数据加载如下:-- 学生表 Student-- 选课表 SC

SQL查询设计 给定四个关联表,其定义和数据加载如下: -- 学生表 Student create table Student(Sno varchar(6), Sname varchar(10), Sdate datetime, Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1999-01-01 , 男); insert into St…...

C#使用RabbitMQ-3_发布订阅模式(扇形交换机)

简介 发布订阅模式允许一个生产者向多个消费者发送消息。在RabbitMQ中实现发布订阅模式通常涉及以下几个关键组件: 生产者:负责生产并发送消息到RabbitMQ的Exchange(路由器)。Exchange:作为消息的中转站,…...

区块链游戏解说:什么是 SecondLive

数据源:SecondLive Dashboard 作者:lesleyfootprint.network 什么是 SecondLive SecondLive 是元宇宙居民的中心枢纽,拥有超过100 万用户的蓬勃社区。它的主要使命是促进自我表达,释放创造力,构建梦想中的平行宇宙…...

构建基于Flask的跑腿外卖小程序

跑腿外卖小程序作为现代生活中的重要组成部分,其技术实现涉及诸多方面,其中Web开发框架是至关重要的一环。在这篇文章中,我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型,展示其基本功能和实现原理。 首先&…...

【算法】Partitioning the Array(数论)

题目 Allen has an array a1,a2,…,an. For every positive integer k that is a divisor of n, Allen does the following: He partitions the array into n/k disjoint subarrays of length k. In other words, he partitions the array into the following subarrays: [a1,…...

ASP.NET Core 7 Web 使用Session

ASP.NET Core 好像不能像20年前那样直接使用Session函数,我使用如下方法 1、在NuGet安装以下2个包 2、在Program.cs注册 //注册Session builder.Services.AddSession(options > {options.IdleTimeout TimeSpan.FromMinutes(60);options.Cookie.HttpOnly fals…...

(1)SpringBoot学习——芋道源码

Spring Boot 的快速入门 一.、概述 使用 Spring Boot 可以很容易地创建出能直接运行的独立的、生产级别的基于 Spring 的应用。 二、快速入门 2.1 创建 Maven 项目 打开 IDEA,点击菜单 File -> New -> Project.来创建项目选择 Maven 类型,点击「…...

宏景eHR FrCodeAddTreeServlet SQL注入漏洞复现

前言 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、产…...

STM32——I2C

通信协议见(STM32——SPI) 一、I2C协议 1.1 I2C协议介绍; I2C是(Inter IC Bus)是由Philips公司开发的一种通用数据总线; 有多根通信线; 一根SDA(串行通信线)&#xf…...

笔记本从零安装ubuntu server系统+环境配置

文章目录 前言相关链接ubuntu Server 安装教程屏幕自动息屏关上盖子不休眠MobaXterm外网SSH内网穿透IPV6远程 为什么我要笔记本装Linux为什么要换ubuntu Server版能否连接wifi之后Linux 配置清单总结 前言 之前装了个ubuntu desktop 版,发现没有命令行,…...

SQL 快速参考手册

SQL 语句语法AND / ORSELECT column_name(s) FROM table_name WHERE condition AND|OR conditionALTER TABLEALTER TABLE table_name ADD column_name datatype 或者: ALTER TABLE table_name DROP COLUMN column_name AS (alias)SELECT column_name AS column_alia…...

Linux/Windows系统无法git clone解决办法

一、Windows 1. 查找github和githubusercontent的IP地址 IP Tracer & Tracker - IP Address Lookup Made EasyIP Lookup Made Easy Using The Best IP Tracker – Trace An IP, Map The Location & Get Accurate Results When Using The Best IP Finderhttps://www.i…...

【算法与数据结构】198、213、337LeetCode打家劫舍I, II, III

文章目录 一、198、打家劫舍二、213、打家劫舍 II三、337、打家劫舍III三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、198、打家劫舍 思路分析:打家劫舍是动态规划的的经典题目。本题的难点在于递归公式…...

React、React Router、JSX 简单入门快速上手

React、React Router、JSX 简单入门快速上手 介绍特点 JSX使用js表达式渲染列表样式控制注意事项 入门脚手架创建react项目安装目录介绍入口文件解析 组件解析介绍函数式组件类组件 事件绑定注意点定义使用事件对象事件处理函数接收额外参数 组件状态状态的定义使用 组件通信父…...

从 0 开始搭建 React 框架

webpack 配置 不再赘述&#xff0c;可参考前三个文章&#xff08;wenpack5 基本使用 1 - 3&#xff09; 使用 react 安装 react、react-dom、babel/preset-react yarn add react react-dom babel/preset-react<!DOCTYPE html> <html lang"en"> <h…...

网站地址怎么改成HTTPS?

现在&#xff0c;所有类型的网站都需要通过 HTTPS 协议进行安全连接&#xff0c;而实现这一目标的唯一方法是使用 SSL 证书。如果您不将 HTTP 转换为 HTTPS&#xff0c;浏览器和应用程序会将您网站的连接标记为不安全。 但用户询问如何将我的网站从 HTTP 更改为 HTTPS。在此页…...

Blender教程(基础)-面的细分与删除、挤出选区-07

一、Blender之面的细分 新建一个立方体&#xff0c;在编辑模式下、选中一个面。 在选中的面上单击右键弹出细分选项&#xff0c;选择细分。 在选中细分后、会默认细分1次。修改细分次数在左下角 二、Blender之面的删除 选择中需要操作的面&#xff0c;在英文状态下按X键弹…...

QT自制软键盘 最完美、最简单、支持中文输入(二)

目录 一、前言 二、本自制虚拟键盘特点 三、中文输入原理 四、组合键输入 五、键盘事件模拟 六、界面 七、代码 7.1 frmKeyBoard 头文件代码 7.2 frmKeyBoard 源文件代码 八、使用示例 九、效果 十、结语 一、前言 由于系统自带虚拟键盘不一定好用&#xff0c;也不一…...

SpringCloud_学习笔记_1

SpringCloud01 1.认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff…...

容器算法迭代器初识

#include<iostream> using namespace std; #include<vector> //vetor容器存放内置数据类型 void test01() {//创建了一个vector容器&#xff0c;数组 vector<int> v;//向容器中插入数据v.push_back (10);//尾插 v.push_back (20);v.push_back (30);v.push_ba…...

瑞_力扣LeetCode_二叉搜索树相关题

文章目录 说明题目 450. 删除二叉搜索树中的节点题解递归实现 题目 701. 二叉搜索树中的插入操作题解递归实现 题目 700. 二叉搜索树中的搜索题解递归实现 题目 98. 验证二叉搜索树题解中序遍历非递归实现中序遍历递归实现上下限递归 题目 938. 二叉搜索树的范围和题解中序遍历…...

python爬虫爬取网站

流程&#xff1a; 1.指定url(获取网页的内容) 爬虫会向指定的URL发送HTTP请求&#xff0c;获取网页的HTML代码&#xff0c;然后解析HTML代码&#xff0c;提取出需要的信息&#xff0c;如文本、图片、链接等。爬虫请求URL的过程中&#xff0c;还可以设置请求头、请求参数、请求…...

c# Get方式调用WebAPI,WebService等接口

/// <summary> /// 利用WebRequest/WebResponse进行WebService调用的类 /// </summary> public class WebServiceHelper {//<webServices>// <protocols>// <add name"HttpGet"/>// <add name"HttpPost"/>// …...

银行数据仓库体系实践(11)--数据仓库开发管理系统及开发流程

数据仓库管理着整个银行或公司的数据&#xff0c;数据结构复杂&#xff0c;数据量庞大&#xff0c;任何一个数据字段的变化或错误都会引起数据错误&#xff0c;影响数据应用&#xff0c;同时业务的发展也带来系统不断升级&#xff0c;数据需求的不断增加&#xff0c;数据仓库需…...

微信小程序引导用户打开定位授权通用模版

在需要使用位置信息的页面&#xff08;例如 onLoad 或 onShow 生命周期函数&#xff09;中调用 wx.getSetting 方法检查用户是否已经授权地理位置权限&#xff1a; Page({onLoad: function() {wx.getSetting({success: res > {if (res.authSetting[scope.userLocation]) {/…...