[Golang从零到壹] 1.环境搭建和第三方包管理

文章目录

    • 安装go环境
    • go.mod
      • 第一种情况,选择GOPATH
      • 第二种情况,不选择GOPATH(推荐)
    • GO111MODULE
    • go module
    • 可执行文件位置

安装go环境

go在安装时选择好安装目录完成安装之后,还需要设置两个环境变量:GOROOTGOPATH

GOROOT即go的安装目录,配置成go的安装目录就可以

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YUJy1uaW-1680186331509)(images/image-20221224134928498.png)]

GOPATH即go将来做存储的路径,随便新建一个路径就可以

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LajlpaND-1680186331510)(images/image-20221224135107606.png)]

同时也要把环境变量中的用户变量的GOPATH也改成相应的值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bTEGmMfH-1680186331517)(images/image-20221224135635835.png)]

然后需要在GOPATH目录下创建如下目录,以后会自动用到这些目录,go最原始的是这样,但是现在这三个文件夹用处改变了,但是为了安全起见还是创建这三个文件夹

pkg:编译后生成文件

src :项目的源代码

bin:编译后可执行的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DQQNqF5C-1680186331518)(images/image-20221224135440302.png)]

安装golang开发环境IDE,选择刚才安装的go编译环境即可,可以写个helloworld测试

go程序必须有一个package main,当发现main包时,从main包中的main函数开始执行。

编译时会声明main包的代码所在目录的目录名作为可执行程序的文件名

package main
import "fmt"
func main() {
	fmt.Println("hello")
}

配置go get的代理镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uIICGVYr-1680186331519)(images/image-20221224153246008.png)]

go.mod

go-v1.19.4版本测试,在创建项目时有以下两种情况

第一种情况,选择GOPATH

golang中新建项目时如果选择GOPATH,并勾选Index entire GOPATH,将项目放到非GOPATH路径下(这里我放在E:\go1-workpath)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wX1YX19-1680186331520)(images/image-20230330100559190.png)]

此时项目路径下没有go.mod文件(不会自动生成go.mod),这时项目是可以看到GOPATH/src的,并且通过go get安装的第三方包也是放在GOPATH/src下面,项目中的go程序可以导入这里的包。

如果设置了go modules的代理GOPROXY,就看不到GOPATH/src了,通过go get安装的第三方包也是放在GOPATH/src下面,但是此时go文件也不能import包。

这种方法的应用背景:直接go get下载不下来,就可以先设置proxy,这样会将第三方包下载到GOPATH/src下面,然后在取消goproxy,这样项目中的文件就可以导入包了。

第二种情况,不选择GOPATH(推荐)

golang中新建项目时如果没有选择GOPATH,则会在项目目录下自动生成一个go.mod文件,将项目放到非GOPATH路径下(这里我放在E:\go2-workpath)

此时不管是否设置了goproxy都看不到GOPATH

由于网络问题不设置goproxy下载不下来

设置了goproxy后,go get会将第三方包下载到GOPATH/pkg/mod目录下,并且此时可以直接导入包

GO111MODULE

自己理解的就是现在高版本的go如果项目路径下有go.mod,就开启了GO111MODULE,这样就不必须将项目路径放在GOPATH/src下了

GO111MODULE是go modules功能的开关

  • GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找

  • GO111MODULE=on,模块支持,go命令行会使用modules,这样就不必须用到GOPATH

  • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

    • 当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
    • 当前文件在包含go.mod文件的目录下面。

在使用go modules时,GOPATH是无意义的,不过它还是会把下载的依赖存储在$GOPATH/pkg/mod 中
也会把go install 的结果放在 $GOPATH/bin 中。

go module

如果一个项目依赖多个第三方包可以挨个go get,但是这样比较慢了,可以用go的第三方包管理器go module来做,这也是现在高版本的go的做法。

当然在go mod init之后,也可以用go get下载第三方包,会自动更新go.mod文件

  • 初始化,新建项目时golang不选择GOPATH会自动创建go.mod,或者手动创建go mod init <模块名>

  • 更新依赖go mod tidy这个命令将会扫描所有我们 import 到的包,并生成对应的记录到 gomod 文件里。

  • 下载依赖go mod download⽬前所有模块版本数据均缓存在 $GOPATH/pkg/mod$GOPATH/pkg/sum 下,同时会在项⽬根⽬录下⽣成 go.sum ⽂件, 该⽂件是依赖的详细依赖。

  • 导⼊依赖 go mod vendor我们的依赖下载完成后是存储了 $GOPATH ⽬录下的,如果有特殊需要,需要将 GOPATH 下的依赖转移⾄该项⽬根 ⽬录下的 vendor(⾃动新建) ⽂件夹下,可以使⽤该命令。

可执行文件位置

默认情况下生成路径如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cxg3OtNf-1680186331522)(images/image-20230330123637986.png)]

可以通过golang界面中右上角edit configuration设置将可执行文件生成到当前目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hIkC5hWH-1680186331523)(images/image-20230330123929023.png)]

参考链接

田老八的离线笔记

go语言:环境变量GOPROXY和GO111MODULE设置

关于go get 以后下载的包不在src下而在pkg的源头并且不可以import(Goland Modules模块的使用)

golang 系列: go mod 使用

【狂神说】Go语言零基础学习视频通俗易懂

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UnQLite入门

本文介绍UnQLite的基本使用&#xff0c;包括增删改查&#xff0c;事务ACID 文章目录UnQLite介绍UnQLite常用接口函数返回码DemoKey/Value存储数据库游标UnQLite介绍 UnQLite简介 UnQLite是&#xff0c;由 Symisc Systems公司出品的一个嵌入式C语言软件库&#xff0c;它实现了一…

Scrapy-核心架构

在之前的文章中&#xff0c;我们已经学习了如何使用Scrapy框架来编写爬虫项目&#xff0c;那么具体Scrapy框架中底层是如何架构的呢&#xff1f;Scrapy主要拥有哪些组件&#xff0c;爬虫具体的实现过程又是怎么样的呢&#xff1f; 为了更深入的了解Scrapy的相关只是&#xff0…

Chatgpt 指令收集

在使用 ChatGPT 时&#xff0c;当你给的指令越精确&#xff0c;它的回答会越到位&#xff0c;举例来说&#xff0c;假如你要请它帮忙写文案&#xff0c;如果没给予指定情境与对象&#xff0c;它会不知道该如何回答的更加准确。 一、写报告 1、我现在正在 [报告的情境与目的]。…

低代码平台应该具备哪些能力?

什么样的低代码无代码平台才算好的平台呢&#xff0c;Gartner 共列出了低代码平台的11个关键能力维度&#xff1a; 1、易用性。易用性是标识低代码平台生产力的关键指标&#xff0c;是指在不写代码的情况下能够完成的功能的多少。 2、用户体验。一般来说&#xff0c;独立软件开…

2023Q2押题,华为OD机试用Python实现 -【机智的外卖员】

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南华为 od 机试,独家整理 已参加机试人员的实战技巧本篇题解:机智的外卖员 题目…

Java中的死锁

1.什么是死锁 死锁&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期的阻塞&#xff0c;线程不可能正常终止。 【举个栗子】滑稽老铁和女生去吃饺子。吃饺子需要醋和饺子。 滑稽老哥抄起了酱油瓶&#xff0c;女生抄起…

【技术教程】在EasyCVR平台中打开第三方桌面端应用的实现过程

EasyCVR视频融合平台基于云边端协同架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台支持海量视频汇聚管理&#xff0c;可支持多协议接入&#xff0c;包括市场主流标准协议与厂家私有协议及SDK&#xff0c;如&#xff1a;国标GB28181、RTMP、RTSP/Onvif、海…

vue 引入高德地图当前定位失败 Get ipLocation failed.Geolocation permission denied.

getCurrentPosition 返回的 message 原因解析 &#xff1a; Get ipLocation failed&#xff1a;IP 精确定位失败&#xff0c;精确IP定位服务目前无法完全覆盖所有用户 IP&#xff0c;失败率在5%左右。sdk 定位失败&#xff1a;检查 sdk的 key 是否设置好&#xff0c;以及 webv…

如何远程连接SQLServer数据库

如何远程连接SQLServer数据库 准备工作 1.打开 选中如下的连接方式 连接成功后就会出出现 2.连接成功后&#xff1a;右键设置属性 安全性设置&#xff1a;如下图所示 设置连接属性&#xff1a; 设置完成之后点击完成&#xff01;&#xff01;&#xff01; 3.打开 启动sqlSe…

华为OD机试用JS实现 -【查找树中的元素 or 查找二叉树节点】(2023-Q2 押题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:查找树中的元素 or 查找二叉树…

2023年南京晓庄学院五年一贯制专转本食品科学与工程专业考试大纲

2023年南京晓庄学院五年一贯制专转本食品科学与工程专业考试大纲 专业科目一 &#xff1a;微生物学基础 【参考书目】《食品微生物学》&#xff0c;杨玉红主编&#xff0c; 中国质检 出版社/中国标准出版社&#xff0c;2017(十三五高职高专院校规划教材) 【考试大纲】 ( 一) 考…

jsp054ssm高校学生成绩管理系统hsg421010A5程序

系统主要包含了学生信息管理、成绩信息管理等多个功能模块。下面分别简单阐述一下这几个功能模块需求。不同的权限对应相应的功能模块的需求&#xff0c;管理员权限的级别是最高的&#xff0c;所以所对应的需求是最多的&#xff0c;下面根据不同的权限分别简单阐述一下各个权限…

神奇智能搜索引擎:perplexity智能搜索引擎(ChatGPT与Edge合体——联网版chatGPT)

目录前言一、Perplexity AI网站介绍二、优点介绍2-0、界面介绍2-1、纯净、时效性、来源说明2-2、基于AI对话形式的搜索引擎三、使用方法介绍总结前言 ChatGPT背后的语言大模型OpenAI GPT 3.5&#xff0c;和微软的必应检索系统整合在一起&#xff1b;同时吸取这二者的长处&#…

Python爬虫|西安地铁客流人次获取与分析(一)

一、目标 通过Python编写爬虫程序,爬取西安地铁发布的客流数据,并保存到CSV文件中,并进行数据可视化与分析。 本次使用的库包括:requests、BeautifulSoup、xpath、csv、json、Pycharts等。 二、爬取思路分析 1、WB网页版 打开XLWB主页网址。 图1.新浪微博手机端网址 …

智慧水利整体解决方案2022(ppt可编辑)

业务场景与痛点分析 聚焦场景&#xff1a; 水工监控、水利监管、城市治水、基层防汛业务场景。 痛点分析&#xff1a; 水工监控中&#xff0c;全国水库共有9.8万座&#xff0c;其中超过50%处于病险状态&#xff1b; 水利监管中&#xff0c;运行管理薄弱、设备老化、预报预警不…

弱监督语义分割的token对比笔记

Token Contrast for Weakly-Supervised Semantic Segmentation 摘要 目的&#xff1a; 使用图像级标签的弱监督语义分割(WSSS)通常利用类激活映射(CAM)生成伪标签。受CNN局部结构感知的限制&#xff0c;CAM通常不能识别整体目标区域。虽然最近的视觉转换器(ViT)可以弥补这一…

汇编实验4(99乘法表,整数分解,素数环,迷宫问题)【栈传参,递归,寻址方式】

目录 一、99乘法表 汇编代码 效果 二、整数拆分 问题描述 c代码 汇编代码 效果 三、素数环 问题描述 c代码 效果 四、迷宫问题 问题描述 c代码 汇编代码 效果 一、99乘法表 汇编代码 INCLUDE Irvine32.inc .data a db *,0 .code main PROC mov ebx,1;ebxi m…

给对象新增两个数组,并分别给对象名称、名字

给对象新增两个数组&#xff0c;并分别给对象名称 代码如下&#xff1a; let a {}a.shuzu [1, 2, 3]a.zhangzu [5, 6, 7]console.log(测试添加, a)console.log(打印后台传递的值, this.res)

ToBeWritten之物联网MQTT、Z-Wave等协议

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

gpt训练数据-网页版chat软件

gpt-3 中文 api 目前&#xff0c;OpenAI官方并没有针对GPT-3的中文API&#xff0c;但是有一些第三方机构或者开发者提供了自己的中文API接口&#xff0c;可以使用GPT-3模型进行中文文本生成&#xff0c;利用这些API可以简单地进行中文文本生成等任务&#xff0c;尤其是对于不擅…