首页 > 其他分享 >golang基础-工作区和gopath

golang基础-工作区和gopath

时间:2024-08-08 15:54:19浏览次数:12  
标签:gopath 代码 基础 golang 编译 导入 semaphore go

go build 命令一些可选项的用途和用法

  1. 在运行go build命令的时候,默认不会编译目标代码包所依赖的那些代码包。当然,如果被依赖的代码包的归档文件不存在,或者源码文件有了变化,那它还是会被编译。
  2. 如果要强制编译它们,可以在执行命令的时候加入标记 -a。此时,不但目标代码包总是会被编译,它依赖的代码包也总会被编译,即使依赖的是标准库中的代码包也是如此。
  3. 另外,如果不但要编译依赖的代码包,还要安装它们的归档文件,那么可以加入标记 -i

怎么确定哪些代码包被编译了呢?有两种方法


  1. 运行go build命令时加入标记-x,这样可以看到go build命令具体都执行了哪些操作。另外也可以加入标记-n,这样可以只查看具体操作而不执行它们。
  2. 运行go build命令时加入标记-v,这样可以看到go build命令编译的代码包的名称。它在与-a标记搭配使用时很有用。

go get指令说明

  1. 命令 go get会自动从一些主流公用代码仓库(比如 GitHub)下载目标代码包,并把它们安装到环境变量GOPATH包含的第 1 工作区的相应目录中。如果存在环境变量GOBIN,那么仅包含命令

    源码文件的代码包会被安装到GOBIN指向的那个目录。

  2. 最常用的几个标记有下面几种:

    • -u:下载并安装代码包,不论工作区中是否已存在它们。
    • -d:只下载代码包,不安装代码包。
    • -fix:在下载代码包后先运行一个用于根据当前 Go 语言版本修正代码的工具,然后再安装代码包。
    • -t:同时下载测试所需的代码包。
    • -insecure:允许通过非安全的网络协议下载和安装代码包。HTTP 就是这样的协议

Go 语言官方提供的go get命令是比较基础的,其中并没有提供依赖管理的功能。目前 GitHub 上有很多提供这类功能的第三方工具,比如glidegb以及官方出品的depvgo等等,它们在内部大都会直接使用go get。


如何变更存储源码的代码仓库或者代码包的相对路径

为了让代码包的远程导入路径不受此类变更的影响,我们会使用自定义的代码包导入路径

对代码包的远程导入路径进行自定义的方法是:在该代码包中的库源码文件的包声明语句的右边加入导入注释,像这样:

package semaphore  // import "golang.org/x/sync/semaphore"

这个代码包原本的完整导入路径是 github.com/golang/sync/semaphore 这与实际存储它的网络地址对应的。该代码包的源码实际存在 GitHub 网站的 golang 组的 sync 代码仓库的 semaphore 目录下。

而加入导入注释之后,用以下命令即可下载并安装该代码包了:

go get golang.org/x/sync/semaphore

而 Go 语言官网 golang.org 下的路径 /x/sync/semaphore 并不是存放semaphore包的真实地址。我们称之为代码包的自定义导入路径。

不过,这还需要在 golang.org 这个域名背后的服务端程序上,添加一些支持才能使这条命令成功。

** 关于自定义代码包导入路径的完整说明可以参看 自定义代码包导入说明

标签:gopath,代码,基础,golang,编译,导入,semaphore,go
From: https://www.cnblogs.com/failymao/p/18349106

相关文章

  • Golang zap 日志简单实用
    zapGolang第三方库记录日志Zap是非常快的、结构化的、分日志级别的Go日志库功能简介可以配置日志输入格式JSON和普通文本可以配置日志输出位置控制台和文件可以配置日志级别debug、info、warn、error安装goget-ugo.uber.org/zap基本使用logger,err:=z......
  • 网络安全入门教程(非常详细)从零基础入门到精通,看完这一篇就够了_网络安全教程
    学前感言:1.这是一条坚持的道路,三分钟的热情可以放弃往下看了.2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发.3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答.4.遇到实在搞不懂的,可以先放放,以后再来解决.......
  • 2024最新版IntelliJ IDEA安装教程(非常详细)从零基础入门到精通,看完这一篇就够了_idea20
    IDEA的使用IDEA的简单介绍IDEA的主要优势IDEA的卸载IDEA的安装第一个程序:HelloWorld结束语IDEA的简单介绍IDEA全称IntelliJIDEA,是Java语言对的集成开发环境,IDEA在业界被认为是公认最好的Java开发工具。IDEA的主要优势✅功能强大①强大的整合能力。比如:GitMavenSp......
  • 书生.浦江大模型实战训练营——(一)InternStudio+Vscode SSH连接远程服务器+Linux基础指
    最近在学习书生.浦江大模型实战训练营,所有课程都免费,以关卡的形式学习,也比较有意思,提供免费的算力实战,真的很不错(无广)!欢迎大家一起学习,打开LLM探索大门:邀请连接,PS,邀请有算力哈哈。文章目录一、InternStudio使用二、VscodeSSH连接远程服务器三、Linux基础指令一......
  • Spring中Bean的一些基础概念
    什么是SpringBean?Bean代指那些被IoC容器所管理的对象。什么是SpringIoCIoC(InversionofControl:控制反转)是一种设计思想。IoC的思想就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理控制:指的是对象实例化的权力反转:控制权交给外部环境(Spring框......
  • Apple Intelligence提示词曝光:Do not hallucinate;XLabs-AI 又发布两个脚本x-flux;吴恩
    ✨1:Somepre-promptinstructionsforAppleAppleIntelligence提示词曝光:Donothallucinate苹果在其最新的开发者测试版中推出了一些生成型AI功能,这些功能已经在WWDC大会上宣布,计划在未来几个月内陆续登陆iPhone、iPad和Mac等设备。一位用户在macOS15.1开发者测......
  • JS基础篇
    JavaScript基础一、JavaScript介绍1.JavaScript是什么2.JavaScript书写位置3.输入输出语法4.变量与常量二、语句1.if语句2.三元运算符3.switch语句4.whlie循环5.for循环三、数组增删改查1.增删改查四、函数1.使用函数2.匿名函数五、对象1.增删改查一、JavaScr......
  • Webpack入门基础知识及案例
    webpack相信大家都已经不陌生了,应用程序的静态模块打包工具。前面我们总结了vue,react入门基础知识,也分别做了vue3的实战小案例,react的实战案例,那么我们如何使用webpack对项目进行模块化打包呢?话不多说,开始!!目录一、熟悉webpack的主要功能二、Webpack的核心概念三、使用webp......
  • 重学面向对象-基础篇03封装、继承和多态
    封装、继承和多态基础概念封装:把对象的属性和方法结合城一个独立的整体,隐藏实现细节,并提供对外访问的接口继承:从已知的一个类中派生出一个新的类,叫子类。子类实现了父类所有非私有化的属性和方法,并根据实际需求扩展出新的行为多态:多个不同的对象对同一消息作出响应,同一消息根......
  • Java 基础
    Java基础目录Java基础1第一个Java程序2IDEA中的代码结构3Variables与Types3.1数据类型3.2变量的注意事项3.3关键字3.4标识符4运算符4.1算术运算符4.1.1不同数字类型相加4.1.2字符相加4.1.3字符串相加4.3赋值运算符4.4关系运算符4.5逻辑运算符5逻辑控制语句5......