GOPATH、GOROOT(VSCode编写第一个go程序)

1. GOROOT和GOPATH

GOROOTGOPATH 都是 Go 语言中的环境变量,用于指定 Go 工具链和工作区的路径。

GOROOT 指定了 Go 工具链的安装路径,它包含了 Go 语言的标准库、编译器等工具。在使用 Go 编译器、运行时等工具时,它们会默认从 GOROOT 中查找相关的文件。一般情况下,我们不需要修改 GOROOT 的值,除非你需要使用不同版本的 Go 工具链。

GOPATH 指定了 Go 语言工作区的路径,它包含了你的项目源代码、依赖库以及编译后的可执行文件等。在使用 Go 工具链时,它们会默认从 GOPATH 中查找相关的文件。如果你的项目依赖了第三方库,那么这些库也会被下载到 GOPATH 目录下。在使用 Go Modules 进行依赖管理时,GOPATH 的作用会被降低,因为 Go Modules 可以将依赖库放在任何地方,不需要将其放在 GOPATH 目录下。

总之,GOROOTGOPATH 都是 Go 语言中非常重要的环境变量,它们对于正确配置 Go 工具链和工作区非常重要。

2. GOPATH

GOPATH 是一个环境变量,用于指定 Go 语言工作区的路径。在 GOPATH 中包含了三个重要的目录:srcbinpkg。其中,src 目录是用于存放 Go 语言源代码的目录,bin 目录是用于存放编译后的可执行文件的目录,pkg 目录是用于存放编译后的库文件的目录。

GOPATH 的作用是告诉 Go 工具链在哪里查找你的项目源代码和依赖库。如果你的项目不在 GOPATH 目录下,那么你需要将你的项目复制到 GOPATH/src 目录下,或者设置 GO111MODULE=on,使用 Go Modules 进行依赖管理。如果你使用 Go Modules 进行依赖管理,那么你可以将你的项目放在任何地方,不需要将其复制到 GOPATH/src 目录下。

3. vscode安装go插件后,编写代码弹出来的安装模块选择全部安装即可

  • 全部安装成功
    在这里插入图片描述
  • 安装成功后会在我们的GOPATH路径下下载到相关的可执行文件和库文件
    在这里插入图片描述

4. vscode中显示package引用包“报错”

在这里插入图片描述

gopls requires a module at the root of your workspace.
You can work with multiple modules by upgrading to Go 1.18 or later, and using
go workspaces (go.work files).
See the documentation for more information on setting up your workspace:
https://github.com/golang/tools/blob/master/gopls/doc/workspace.md.
  • 这个“报错”并不是“‘报错”,不会影响程序的正常运行
    主要是因为我的GOPATH和工作目录不再同一目录下,有很多网友说的可以打开文件—> 首选项—> 设置—> 扩展—> go—> Alternate Tools—> 编辑settings.json ,这里添加
"gopls": {"experimentalWorkspaceModule": true
},
  • 我这里是行不通的,照样报错
  • 不行,不行,不行

5. 使用 Go Modules 管理

  • 最大的好处就是我的项目可以放在任意位置
    vscode打开控制台在项目下执行go mod init <项目路径>,例如我的项目路径是D:/goproject:

  • 执行go mod init goproject
    在这里插入图片描述

  • 可以看到在我的项目底下生成了一个go.mod文件,里面放的是我的项目名称和go版本,其实这个文件还有更多作用,感兴趣的可以去多多了解,也可以达到评论区一块学习交流

  • 这个文件也可以自己手动添加不用命令

module goprojectgo 1.17

6. go.mod文件

是的,使用 go mod init goproject 命令会在当前目录下生成一个名为 go.mod 的文件。这个文件是 Go Modules 的描述文件,它包含了你的项目名称、版本号以及依赖库等信息。

在你的项目中使用 Go Modules 进行依赖管理时,你可以在 go.mod 文件中声明你的项目所依赖的第三方库,然后使用 go buildgo test 等命令自动下载并管理这些依赖库。这样可以方便地管理你的项目依赖,并且可以避免由于依赖库版本不一致而导致的编译错误等问题。

除了 go.mod 文件之外,使用 go mod init 命令还会生成一个名为 go.sum 的文件。这个文件用于记录你的项目所依赖的第三方库的具体版本和哈希值等信息,以确保每个人在构建你的项目时都使用相同的依赖库版本。

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

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

相关文章

LabVIEW开发图像采集和图像处理程序

LabVIEW开发图像采集和图像处理程序 扫描电子显微镜&#xff08;SEM&#xff09;是一种功能强大的工具&#xff0c;广泛用于高分辨率的生物和半导体样品检测。然而&#xff0c;对于大面积或3D成像&#xff0c;SEM成像是一个耗时的过程。MBSEM旨在通过同时扫描多个像素来减少采…

Vue3使用element-plus实现弹窗效果-demo

使用 <ShareDialog v-model"isShow" onChangeDialog"onChangeDialog" /> import ShareDialog from ./ShareDialog.vue; const isShow ref(false); const onShowDialog (show) > {isShow.value show; }; const onChangeDialog (val) > {co…

关于 Eclipse 的一场 “三角关系”

上个世纪 90 年代&#xff0c;世界上的计算机要么不联网&#xff0c;要么在企业内部联网。但是&#xff0c;在互联网的概念下&#xff0c;计算机之间共享信息和资源的需求成为了必要。 1995 年 5 月&#xff0c;Java 横空出世。Java 的父亲是当时凭借 Solaris 操作系统风头正盛…

【朱颜不曾改,芳菲万户香。AIGC人物图片创作---InsCode Stable Diffusion 美图活动一期】

【朱颜不曾改&#xff0c;芳菲万户香。AIGC人物图片创作 ---InsCode Stable Diffusion 美图活动一期】 本文目录&#xff1a; 一、 Stable Diffusion 模型在线使用 1.1、模板运行环境配置 1.2、运行InsCode平台的Stable Diffusion模板 二、Stable Diffusion主界面功能 2.…

数据结构——各种常见算法的实现方法和思路

文章目录 常见的排序算法类型复杂度和稳定性 1.冒泡排序2.直接插入排序3.希尔排序4.简单选择排序方法1&#xff1a;双向遍历选择排序方法2&#xff1a;单向遍历选择排序 5.归并排序方法1&#xff1a;递归方法2&#xff1a;非递归 6.快速排序方法1&#xff1a;随机取keyi方法2&a…

谈 Delphi 中 JSON 的简便操作(非常简单)

我曾有讲过Delphi操作JSON的方法&#xff0c;特别是这一篇【delphi】类和记录的 helpers&#xff08;助手&#xff09;。但是因为当时是主要介绍的是Delphi的Helper&#xff0c;大家可能并没注意到Delphi中JSON的简便操作方法。 早期Delphi并没有自己的JSON操作库&#xff0c;大…

了解 JVM - 认识垃圾回收机制与类加载过程

前言 本篇通过介绍JVM是什么&#xff0c;认识JVM的内存区域的划分&#xff0c;了解类加载过程&#xff0c;JVM中垃圾回收机制&#xff0c;从中了解到垃圾回收机制中如何找到存活对象的方式&#xff0c;引用计数与可达性分析的方式&#xff0c;再释放垃圾对象时使用的方式&…

Kerberos协议详解

0x01 kerberos协议的角色组成 Kerberos协议中存在三个角色&#xff1a; 客户端(Client)&#xff1a;发送请求的一方 服务端(Server)&#xff1a;接收请求的一方 密钥分发中心(Key distribution KDC) 密钥分发中心分为两个部分&#xff1a; AS(Authentication Server)&…

Nacos (2.0版本之后)状态异常集群节点状态异常

在nacos 2.0 之后正常部署后节点状态仅有一个正常,其余均为DOWN 或者SUSPICIOUS 状态 查看日志后发现 ERROR Server check fail, please check server 192.168.172.104 ,port 9849 is available , error {} 其实是nacos 相互之间不能正常通信造成的,nacos客户端升级为2.x版…

apple pencil一代的平替有哪些品牌?苹果平板的触控笔

随着苹果Pencil系列的推出&#xff0c;平替电容笔在国内市场得到了较好的发展&#xff0c;随之的销量&#xff0c;也开始暴涨&#xff0c;苹果pencil因为价格太高&#xff0c;导致很多人买不起。目前市场上&#xff0c;有不少的平替电容笔&#xff0c;可以替代苹果的Pencil&…

MySQL 主从复制与读写分离

MySQL 主从复制与读写分离 一、mysql读写分离的概念1、什么是读写分离&#xff1f;2、为什么要读写分离呢&#xff1f;3、什么时候要读写分离&#xff1f;4、主从复制与读写分离5、mysql支持的复制类型 二、主从复制的工作过程三、MySQL 读写分离原理常见的 MySQL 读写分离分为…

【Distributed】分布式ELK日志文件分析系统(二)

文章目录 一、FilebeatELK 部署1. 环境部署2. 在 Filebeat 节点上操作2.1 安装 Filebeat2.2 设置 filebeat 的主配置文件 3. 在 Apache 节点上操作3.1 在 Logstash 组件所在节点上新建一个 Logstash 配置文件 3. 启动3.1 在Logstash 组件所在节点启动3.2 在 Filebeat 节点 启动…

Stable Diffusion 用2D图片制作3D动态壁纸

如果想让我们的2D图片动起来可以使用stable-diffusion-webui-depthmap-script插件在SD中进行加工让图片动起来。 这是一个可以从单个图像创建深度图,现在也可以生成3D立体图像对的插件,无论是并排还是浮雕。生成的结果可在3D或全息设备(如VR耳机或Looking Glass显示器)上查…

大模型加速学科升级,飞桨赋能北邮“X+大模型”特色小学期

在人工智能时代&#xff0c;设计师与产品经理比以往更加需要关注一个事实&#xff1a;那就是如何利用人工智能和数据分析技术&#xff0c;打造让用户心动的信息交互产品和用户体验&#xff0c;释放人-机协同共创的巨大潜能&#xff0c;是决定设计产能和竞争力的关键。 在产业的…

RabbitMQ ---- 消息队列

RabbitMQ ---- 消息队列 1. MQ 的相关概念1.1 什么是 MQ1.2 为什么要用 MQ1.3 MQ 的分类1.4 MQ 的选择 2. RabbitMQ2.1 RabbitMQ 的概念2.2 四大核心概念2.3 RabbitMQ 核心部分2.4 各个名词介绍2.5 安装 1. MQ 的相关概念 1.1 什么是 MQ MQ(message queue)&#xff0c;从字面…

爬虫之Scrapy

一 介绍 Scrapy一个开源和协作的框架&#xff0c;其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的&#xff0c;使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛&#xff0c;可用于如数据挖掘、监测和自动化测试等领域&#x…

什么是Docker

容器技术和虚拟机 虚拟机 和一个单纯的应用程序相比&#xff0c;操作系统是一个很重的程序&#xff0c;刚装好的系统还什么都没有部署&#xff0c;单纯的操作系统其磁盘占用至少几十G起步&#xff0c;内存要几个G起步。 在这台机器上开启三个虚拟机&#xff0c;每个虚拟机上…

PSI算法经典论文算法概述

文章目录 什么是隐私求交PSIPSI协议分类PSI算法的分类基于哈希函数的PSI算法基于不经意传输&#xff08;OT&#xff09;的 PSI算法基于GC的PSI算法基于公钥加密的PSI算法基于DH的PSI算法基于RSA盲签名的PSI算法基于同态加密的PSI算法 基于差分隐私的PSI算法 总结参考文献 什么是…

为了实现上网自由,我做了一个多功能串口服务器

项目作者&#xff1a;小华的物联网嵌入式之旅 介绍&#xff1a;从事电气自动化行业&#xff0c;多次获得物联网设计竞赛&#xff0c;爱好嵌入式设计开发&#xff0c;物联网开发。 设计方案思路的由来&#xff0c;是因为我们现在的开发板基本需要通过串口与WIFI模组或以太网模…

[Linux] 最基础简单的线程池 及其 单例模式的实现

本篇文章主要用到线程相关内容, 下面是博主关于线程相关内容的文章: [Linux] 线程同步分析&#xff1a;什么是条件变量&#xff1f;生产者消费者模型是什么&#xff1f;POSIX信号量怎么用&#xff1f;阻塞队列和环形队列模拟生产者消费者模型 [Linux] 线程互斥分析: 多线程的问…