go入门Windows环境搭建
简介
Go 即 Golang,是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。
根据 Go 语言开发者自述,近 10 多年,从单机时代的 C 语言到现在互联网时代的 Java,都没有令人满意的开发语言,而 C++往往给人的感觉是,花了 100%的经历,却只有 60%的开发效率,产出比太低,Java 和 C#的哲学又来源于 C++。并且,随着硬件的不断升级,这些语言不能充分的利用硬件及 CPU。因此,一门高效、简洁、开源的语言诞生了。
Go 语言不仅拥有静态编译语言的安全和高性能,而且又达到了动态语言开发速度和易维护性。有人形容 Go 语言:Go = C + Python , 说明 Go 语言既有 C 语言程序的运行速度,又能达到 Python 语言的快速开发。
Windows环境搭建
- 下载golang
Go 官网下载地址
Go 官方镜像站(没有VPN就选择这个地址)

- 安装
- 点击安装即可

- 验证
go version

- 查看go环境
go env

说明:Go1.11 版本之后无需手动配置环境变量,使用 go mod 管理项目,也不需要非得把项目放到 GOPATH 指定目录下,你可以在你磁盘的任何位置新建一个项目。
Go1.13 以后可以彻底不要 GOPATH 了。
说白了就是让用户更简单的使用go
开发工具
-
goland

-
vscode

个人喜欢jetbrains所有产品,但是由于需要收费(你懂的),所以这里暂时用vscode。
- vscode安装
详细安装参考这篇博客
- vscode安装go插件

- 本地创建一个目录

- vscode打开这个目录


创建一个以go结尾的文件,vscode就会识别出用go插件解析:

此时就会让安装go提示工具,安装即可

注意如果vscode写代码没有提示,可以配置下面环境变量
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn //将代理设置为国内源
- GO111MODULE 是 Go 1.11 引入的一个环境变量,用于控制 Go 模块(Module)的行为。设置为 on 表示强制启用 Go 模块模式,无论项目是否在 GOPATH 目录下。在模块模式下,Go 会忽略 GOPATH 和 vendor 目录,转而使用 go.mod 文件来管理依赖。
- GOPROXY 是 Go 模块模式下用于指定模块代理服务器的环境变量。默认情况下,Go 会直接从版本控制系统(如 GitHub)下载依赖模块,但在国内访问这些源可能会比较慢或不稳定。
设置为 https://goproxy.cn 表示使用国内的 Go 模块代理服务器,这样可以加速依赖模块的下载。
- 编写hello world代码进行测试

后记
vscode和goland体验差距太大了:
-
如果仍然有出现写代码没有提示的情况,那么请手动安装相关的包:

把所有的包都选上安装,最好有VPN

然后重启vscode。
此时就会自动安装,安装成功后就会有提示了。

-
需要手动初始化模块,否则提示:initialization failed: packages.Load error: err: exit status 1: stderr: go: go.mod file not found in current directory or any parent directory; see 'go help modules’go list。
这意味着你的项目目录中没有 go.mod 文件,而 Go 工具链期望在模块模式下工作。
此时只要执行下面命令:
go mod init <module-name>

此时项目根目录就会多了一个go.mod文件,并且提示信息也没有了

go.mod简介
go.mod 文件是 Go 语言中用于模块管理的核心文件。它定义了当前项目的模块路径、Go 版本以及项目所依赖的其他模块(第三方库或内部模块)。Go 模块(Module)是 Go 1.11 版本引入的依赖管理机制,用于取代旧的 GOPATH 模式。
go.mod 文件的作用
-
定义模块路径:
go.mod文件的第一行通常定义了模块的名称(模块路径),例如:
这个路径是唯一的,通常与代码仓库的路径一致,用于标识模块。module github.com/username/myproject
-
管理依赖:
go.mod文件会记录项目所依赖的其他模块及其版本。例如:
这些依赖项会在运行require (github.com/gin-gonic/gin v1.9.1golang.org/x/sync v0.3.0 )go mod tidy或go build时自动下载到本地。
-
锁定依赖版本:
- 除了
go.mod文件,Go 还会生成一个go.sum文件,用于记录依赖模块的完整哈希值,确保每次构建时使用的依赖版本一致,避免因依赖版本不一致导致的问题。
- 除了
-
指定 Go 版本:
go.mod文件可以指定项目所需的 Go 版本,例如:
这表示该项目需要 Go 1.20 或更高版本来编译。go 1.20
-
支持模块化开发:
- Go 模块允许你将代码拆分为多个模块,每个模块可以独立管理依赖和版本,适合大型项目或微服务架构。
go.mod 文件的结构
一个典型的 go.mod 文件如下:
module github.com/username/myprojectgo 1.20require (github.com/gin-gonic/gin v1.9.1golang.org/x/sync v0.3.0
)replace github.com/old/module => github.com/new/module v1.2.3exclude github.com/deprecated/module v1.0.0
module:定义模块路径。go:指定 Go 版本。require:列出项目依赖的模块及其版本。replace:用于替换某个依赖模块的路径或版本(例如,使用本地的模块或 fork 的模块)。exclude:排除某个模块的特定版本。
如何生成 go.mod 文件
如果你还没有 go.mod 文件,可以通过以下命令生成:
go mod init <module-name>
例如:
go mod init github.com/username/myproject
运行后,Go 会生成一个 go.mod 文件,并根据项目中的 import 语句自动添加依赖。
常用的 Go 模块命令
go mod init:初始化模块,生成go.mod文件。go mod tidy:根据代码中的import语句,自动添加或删除go.mod中的依赖。go mod download:下载依赖模块到本地缓存(通常在$GOPATH/pkg/mod目录下)。go mod vendor:将依赖复制到项目的vendor目录中,用于离线构建。go list -m all:列出当前模块的所有依赖。
为什么需要 go.mod 文件?
在 Go 1.11 之前,Go 使用 GOPATH 模式管理代码和依赖,所有项目都必须放在 GOPATH 目录下,且依赖管理非常不方便。引入 go.mod 文件后:
- 项目可以放在任何位置。
- 依赖版本可以精确控制。
- 支持模块化开发,适合现代软件工程实践。
参考文献
https://go.dev/doc/tutorial/getting-started
https://gobyexample.com/
https://www.w3schools.com/go/
https://go.dev/doc/tutorial/
https://www.geeksforgeeks.org/golang-tutorial-learn-go-programming-language/
相关文章:
go入门Windows环境搭建
简介 Go 即 Golang,是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。 根据 Go 语言开发者自述,近 10 多年,从单机时代的 C 语言到现在互联网时代的 Java,都没有令人满意的开发语言,而 C往往给人的感觉是&a…...
es6中关于let的使用以及案例,包括但不限于块级作用域,不允许重复声明,没有变量提升,暂存性死区,不与顶层对象挂钩
ES6 let 关键字完整指南 1. 块级作用域 1.1 let vs var 作用域对比 // var - 函数作用域 function varExample() {var x 1;if (true) {var x 2; // 同一个 xconsole.log(x); // 2}console.log(x); // 2 }// let - 块级作用域 function letExample() {let x 1;if (true…...
IO进程线程复习
文件IO和标准IO的区别 文件IO: 1.系统提供的用于输入输出的函数 2.有文件描述符0,1,2 3.open,close,puts,gets 4.可以操作任意类型的文件,不能操作目录 5.无缓存机制 标准IO: 1.C库提供的用于输入输出的函数 2.有文件流…...
Mybatis初步了解
mysql缓存:根据sql语句进入缓存,如果sql语句多加一个空格就进入不到同一个缓存,另外数据库数据发生了更新,缓存中的数据不会同步。 延迟加载:先查询基本信息,再查询其他信息,而不是一次就查询出…...
基于PyQt设计的智能停车管理系统
文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】设计意义【4】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】VSCODE【2】python【3】ptqt【4】HyperLPR31.5 参考文献二、安装Python环境1.1 环境介绍**1.2 Python版本介…...
linux系统中的 scp的使用方法
SCP(Secure Copy Protocol)是一种通过加密的方式在本地主机和远程主机之间安全地传输文件的协议。 它是基于SSH协议的扩展,允许用户在不同主机之间进行文件复制和传输,是Linux和Unix系统中常用的工具之一。 在嵌入式Linux软件的…...
短连接项目01---基本框架的搭建和测试运行
文章目录 1.什么是短链2.仓库的创建3.项目的创建4.配置文件的修改5.三个模块的创建5.1如何创建5.2类型的选择5.3包的完善 6.yml文件的配置7.启动类的测试8可能会出现的问题 1.什么是短链 下面的这个就是一个长的url,我们的短链里面的链就是链接,也就是我…...
Unity阿里云OpenAPI 获取 Token的C#【记录】
获取Token using UnityEngine; using System; using System.Text; using System.Linq; using Newtonsoft.Json.Linq; using System.Security.Cryptography; using UnityEngine.Networking; using System.Collections.Generic; using System.Globalization; using Cysharp.Thr…...
2023年吉林省职业院校技能大赛网络系统管理样题-网络配置(华三代码)
目录 附录1:拓扑图 附录2:地址规划表 1.S1 2.S3 3.S4 4.S5 5.S7 6.S8 7.S9 8.R1 9.R2 10.R3 11.EG1 12.EG2 13.AC1 14.AC2 附录1:拓扑图 编号 型号...
WSL 安装cuDNN
WSL 安装cuDNN 参考文档:https://docs.nvidia.com/deeplearning/cudnn/installation/latest/linux.html#verifying-the-install-on-linux 1. 下载相应包 根据下方下载地址进入下载界面,并选择与自己电脑相对应的平台执行图中的命令 下载地址࿱…...
SSRF漏洞学习总结
一、SSRF漏洞 1.原理 SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种安全漏洞,攻击者利用这个漏洞可以诱使服务器端发起由攻击者构造的请求。这种攻击通常发生在应用接受来自用户的输入,并且该输入用于构…...
stack 和 queue容器的介绍和使用
1.stack的介绍 1.1stack容器的介绍 stack容器的基本特征和功能我们在数据结构篇就已经详细介绍了,还不了解的uu, 可以移步去看这篇博客哟: 数据结构-栈数据结构-队列 简单回顾一下,重要的概念其实就是后进先出,栈在…...
Windows中本地组策略编辑器gpedit.msc打不开/微软远程桌面无法复制粘贴
目录 背景 解决gpedit.msc打不开 解决复制粘贴 剪贴板的问题 启用远程桌面剪贴板与驱动器 重启RDP剪贴板监视程序 以上都不行?可能是操作被Win11系统阻止 最后 背景 远程桌面无法复制粘贴,需要查看下主机策略组设置,结果按WinR输入…...
(2023 RESS ) Federated multi-source domain adversarial adaptation framework
📚 研究背景与挑战 机械设备的故障诊断对于保障生产效率和安全至关重要。传统的智能诊断方法依赖于大量的训练数据,但在实际工业场景中,数据收集受到经济和时间因素的限制。更棘手的是,由于行业竞争和隐私安全问题,不…...
Java实现FIFO缓存策略实战
实现FIFO模型选择FIFO模型实现过程FIFO模型完整代码下面看一下先进先出的示例过程总结FIFO(First In First Out,先进先出)策略是一种基本的数据处理和存储管理方法,在Java中,这种策略通常用于管理那些需要按照顺序处理的数据项,比如任务的队列、数据的传输缓冲区等。在Ja…...
虚幻基础07:蓝图接口
能帮到你的话,就给个赞吧 😘 文章目录 作用原理事件函数 作用 实现对象间的通知。 A 通知 B 做什么。 原理 将接口抽象为蓝图,使得任意蓝图都能直接访问。 只需要再传入对象地址,就能执行对象的功能。 事件 黄色:…...
978.最长湍流子数组
目录 题目过程解法收获 题目 给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。 更正式地来说,当 arr 的子数组 A[i], A[i1], …, A[j] 满足仅满足…...
Python数据分析-Python语法基础,IPython和Jupyter-Notebooks(二)
title: ‘Python数据分析:Python语法基础,IPython和Jupyter Notebooks(二)’ tags: python数据分析 categories:python数据分析 keywords:python数据分析 cover: …/img/404_icecream_whale.png description: 本文介绍python的基础语法和jup…...
Redis学习之哨兵一
一、基本概念 1.主从复制的问题: 一旦主节点出现故障需要手动的将一个从节点晋升为主节点同时需要修改应用方的主节点地址还需要通过命令其他节点去复制新的主节点。 主节点的写能力和存储能力受到单机的限制 2.高可用: 上图为一主二从的redis主从复制模…...
【C++高并发服务器WebServer】-9:多线程开发
本文目录 一、线程概述1.1 线程和进程的区别1.2 线程之间共享和非共享资源1.3 NPTL 二、线程操作2.1 pthread_create2.2 pthread_exit2.3 pthread_join2.4 pthread_detach2.5 patch_cancel2.6 pthread_attr 三、实战demo四、线程同步五、死锁六、读写锁七、生产消费者模型 一、…...
【时时三省】(C语言基础)文件的随机读写
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 fseek 根据文件指针的位置和偏移量来定位文件指针 示例: 这个输出的就是ade seek_cur的意思是从当前偏移量 2就是从a往后偏移两个就是d 偏移量 SEEK_CUR…...
【python】python基于机器学习与数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 python基于机器学习与数据分析的二手手机特性关联与…...
WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证
WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证 一、前言二、WPF 数据绑定基础回顾2.1 数据绑定的基本概念2.2 数据绑定的基本语法 三、绑定模式3.1 单向绑定(One - Way Binding)3.2 双向绑定(Two - Way Binding)…...
java.util.Random类(详细案例拆解)(已完结)
前言: 小编打算近期更俩三期类的专栏,一些常用的专集类,给大家分好类别总结和详细的代码举例解释。 今天是除夕,小编先祝贺大家除夕快乐啦!! 今天是第六个 java.lang.Math 包中的 java.util.Random类 我…...
【数据结构】动态内存管理函数
动态内存管理 为什么存在动态内存管理动态内存函数的介绍🎊malloc补充:perror函数🎊free🎊calloc🎊realloc 常见动态内存错误对空指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一…...
TVM框架学习笔记
TVM是陈天齐等人一个开源的深度学习编译器栈,用于优化和部署机器学习模型到各种硬件后端。它支持多种前端框架,如TensorFlow、PyTorch、ONNX等,并且可以在不同的硬件平台上运行,包括CPU、GPU和专用加速器。官方文档: Apache TVM Documentation — tvm 0.20.dev0 documenta…...
neo4j-community-5.26.0 install in window10
在住处电脑重新配置一下neo4j, 1.先至官方下载 Neo4j Desktop Download | Free Graph Database Download Neo4j Deployment Center - Graph Database & Analytics 2.配置java jdk jdk 21 官网下载 Java Downloads | Oracle 中国 path: 4.查看java -version 版本 5.n…...
macbook安装go语言
通过brew来安装go语言 使用brew命令时,一般都会通过brew search看看有哪些版本 brew search go执行后,返回了一堆内容,最下方展示 If you meant "go" specifically: It was migrated from homebrew/cask to homebrew/core. Cas…...
LCD液晶屏的工作原理以及背光模组
LCD液晶屏的工作原理以及背光模组 液晶屏工作原理 像素点的主要结构背光模组 LCD液晶屏主要由两部分组成,液晶屏和背光模组。背光模组提供均匀稳定的光源,液晶屏控制光线的传播路径,是屏幕显示设定的图像。 液晶屏 LCD的核心是两片玻璃之间…...
es数据同步
Logstash 是 Elastic 技术栈中的一个技术,它是一个数据采集引擎,可以从数据库采集数据到 ES 中。可以通过设置 自增 ID 主键 或 更新时间 来控制数据的自动同步: 自增 ID 主键:Logstatsh 会有定时任务,如果发现有主键…...
