首页 > 其他分享 >小白爱上了Go之Go的基础配置问题

小白爱上了Go之Go的基础配置问题

时间:2024-08-10 17:38:02浏览次数:12  
标签:GOPATH 小白爱 文件 配置 go Go 环境变量 mod

在阅读了《The way to go》和《Go 语言实战》两本 Go 语言学习的入门书籍后,小白觉得自己的Go语言基础知识已经足够开始上手应用开发了。

于是小白找到了一本《Go Web 编程》,在阅读这本书的过程中,自己动手开发Go Web应用,并希望在阅读完之后,能够开发出一个功能丰富,性能优异的Web应用。

小白很开心终于可以上手写Go Web应用了,在编写了一个小的服务器Demo后,小白发现对于Go 环境变量GoPath、GoRoot还是糊里糊涂的。

直接使用Go install 去编译程序时,如果文件放到Go安装路径下的src文件,会直接在同级目录bin下边生成相应的 exe 文件。但是为什么会这样呢?

而且在 Go 1.22.5 版本,GoPath和GoRoot同路径会提示警告:

warning: GOPATH set to GOROOT has no effect                 //这是由于GOPATH和GOROOT同路径导致的

但把环境变量GOPATH设置为自己定义的项目路径如:D:/goproject ,并在路径下边新建src、pkg、bin文件,把项目文件放到src路径下,设置的GOPATH又会不生效,提示错误:

go: 'go install' requires a version when current directory is not in a module
        Try 'go install first_webapp@latest' to install the latest version

这里小白有几点不明白的地方

1.是不是一定要手动建src、pkg、bin文件

2.环境变量是设置用户变量还是系统变量,设置完后需不需要重启

3.为什么windows环境下,设置的GOPATH环境变量无效

4.为什么使用Go mod,什么是Go mod

首先第一点:

Go在执行go install 命令时,会自动扫描GOPATH环境变量指定目录下的src文件,所以src文件是必须要创建的。
bin 文件并不必须要创建,在执行go install 成功后会自动创建bin文件夹,并将生成的exe文件放置到里面。
pkg文件用来存放编译后生成的归档文件例如(go module),也并不是必须创建的,可以自动生成。

第二点:

环境变量设置用户变量或者系统变量都可以,但是如果都设置的话,用户变量会覆盖系统变量。
设置完成后,重启cmd命令提示符或者vscode即可,不需要重启电脑。
另外,在设置环境变量的时候,需要指定全路径的方式。比如在使用 %GOROOT%/bin 设置系统变量Path不生效。

第三点:

经过验证,跟GOPATH设置无关,如果放到Go安装目录的src文件下,直接执行go install 就会自动在Go安装目录的bin文件夹下生成exe文件。
而如果不在Go安装目录下边,需要在项目目录先执行go mod init初始化mod后,
再执行 go install xxx 即会再项目目录src同级的bin文件中生成exe文件。其中 xxx 为module name
经回翻《Go 语言实战》GOPATH的主要用途如下:
在import导入包时,编译器会使用Go环境变量设置的路径,通过引入的相对路径来查找磁盘上的包。
标准库中的包会在安装 Go 的位置找到。
Go 开发者创建的包会在 GOPATH 环境变量指定的目录里查找。GOPATH指定的目录就是开发者的个人工作空间。
编译器会先查找 Go 的安装目录,然后才会按顺序找 GOPATH 变量里列出的目录。

第四点:

什么是Go mod
Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。

为什么用Go mod
猜测在引入Go mod 之后,在创建项目时,生成mod文件已经是 go 程序必须的执行步骤,以便更好的管理依赖包的问题

标签:GOPATH,小白爱,文件,配置,go,Go,环境变量,mod
From: https://www.cnblogs.com/pocn/p/18352575

相关文章

  • 2024最新版PyCharm下载安装详细教程,Python环境配置和使用指南,零基础保姆级教程
    一、简介PyCharm是一款PythonIDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如,调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。Pytho......
  • 基于django+vue社区疫情防控管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景近年来,全球公共卫生事件频发,尤其是新冠疫情的爆发,对社区管理和居民生活造成了巨大影响。面对疫情传播的复杂性和不确定性,传统的社区管理方......
  • 基于django+vue社区智能诊疗服务系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着科技的飞速发展和人口老龄化趋势的加剧,社区医疗服务面临着前所未有的挑战。传统诊疗模式存在资源分配不均、就诊流程繁琐、信息孤岛等......
  • 基于django+vue同学录网站系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,人们的社交方式发生了翻天覆地的变化。在这个数字化时代,传统的纸质同学录已难以满足人们对便捷、高效、互动性强......
  • http.sys 是 IIS 的底层组件,负责高效、安全地处理 HTTP 请求,而 IIS 则提供了更高层次
    IIS(InternetInformationServices)和http.sys是MicrosoftWindows操作系统中的两个相关组件,它们一起工作来处理和管理HTTP请求。以下是它们的关系和功能:IIS:Web服务器:IIS是Microsoft的Web服务器软件,提供了用于托管和管理Web应用程序的功能,包括网站、应用程序......
  • 在 Windows 上使用 LCX(Local Channel eXchange)来进行本地和远程转发,此大纲旨在提供顶
    LCX(LocalChanneleXchange)通常指的是一种用于网络协议中的本地和远程转发技术。如果你在谈论的是与LCX相关的网络配置,它可能涉及不同的上下文,例如在通信协议或网络交换中。本地和远程转发的基本概念:本地转发(LocalForwarding):本地转发将本地计算机上的一个端口转发到......
  • Python爬虫常用库的安装及环境配置(widows系统)
    Python常用库的安装urllib、re这两个库是Python的内置库,直接使用方法import导入即可。requests这个库是请求的库。我们需要使用执行文件pip3来进行安装。文件处于C:\Python36\Scripts下,我们可以先将此路径设为环境变量。在命令行中输入pip3installrequests进行安装......
  • QT6配置opencv
    参考一个博主的步骤:Qt6MinGW+OpenCV+CMake+Windows11环境搭建详细记录_qt6安装opencv-CSDN博客链接放在这里了QT6默认大家都已经安装好了,没安装的可以去搜索QT6安装的教程1.安装opencv:Releases-OpenCV安装:我安装的opencv默认在C盘,根据自己安装的路径找到opencv目录下......
  • NoSQL之Redis配置与优化
    一、redis与memcache总体对比1.性能Redis:只使用单核,平均每一个核上Redis在存储小数据时比Memcached性能更高。Memcached:可以使用多核,而在100k以上的数据中,Memcached性能要高于Redis。2.内存使用效率MemCached:使用简单的key-value存储,Memcached的内存利用率更高。Redis:如......
  • Ubuntu24.04安装 Mysql 并修改root密码 + 配置
    参考文章:Ubuntu安装MySQL一、下载并安装MySQL1、安装mysql服务端yammie@my-pc>/opt$sudoapt-getinstallmysql-server2、安装mysql客户端yammie@my-pc>/opt$sudoapt-getinstallmysql-client3、安装程序编译时连接的库yammie@my-pc>/opt$sudoapt-......