• [Go]GOPATH相关知识点


    在成功安装好Go之后,执行命令 go env 就可以看到有关go的一些环境变量,其中比较关键的是GOROOT、GOPATH和 GOBIN

    1、设置GOPATH环境变量有什么意义?

      GOPATH是指:指向工作区(workspace)的路径。为了集中组织代码,以及代码互相引用
      GOPATH可以是一个目录的路径,也可以包含多个目录路径,每个目录都代表Go语言的一个workspace。这些工作区用于放置Go语言的源码文件(source file),以及安装后的归档文件(archive file,扩展名是.a的文件,程序编译后生成的静态库文件)和可执行文件(executable file)

     

    2、Go语言源码的组织方式

      Go语言的源码是以代码包为基本组织单位的,每个代码包都有导入路径,代码包的导入路径是其他代码在使用该包中的程序实体时需要引入的路径。在实际使用程序实体之前,必须先导入其所在的代码包

     

    import “github.com/……”

     

      在workspace中一个代码包的导入路径实际上就是从src子目录到该包实际存储位置的相对路径。

      Go语言源码的组织方式就是以环境变量GOPATH、workspace、src目录和代码包为主线的。一般情况下,Go语言的源码文件都需要被存放在GOPATH包含的某个workspace中的src目录下的某个代码包中

     

    3、源码安装后的结果

      源码文件通常会被放在某个工作区的src子目录下,安装后产生了归档文件,会放在该工作区的pkg子目录下,如果产生了可执行文件,就可能会放进该工作区的bin子目录

     

    4、构建和安装Go程序的过程

      构建操作使用命令go build:

      1)构建库源码文件,操作的结果只会存在于临时目录中能够,这里构建的主要意义在于检查和验证

      2)构建命令源码文件,操作的结果文件会被搬运到那个源码文件所在的目录中

      安装操作使用命令go install:

      安装操作会先执行构建,再进行链接操作,并且把结果文件搬运到指定目录。

      1)安装库源码文件,结果文件会被被搬运到它所在工作区的pkg目录下的某个子目录中

           2)安装命令源码文件,结果文件会被被搬运到它所在工作区的bin目录下的某个子目录中或GOBIN指向的目录中

     

    看到这里就有个疑问了,那什么是命令源码文件,什么是库源码文件呢?

      1)什么是命令源码文件

      如果一个源码文件声明属于main包,并且包含一个无参数声明且无结果声明的main函数,那么就是命令源码文件

     

    package main
    
    import "fmt"
    
    func main() {
           fmt.Println("Hello, world!")                
    } 

      如果把代码存为hello.go,那么运行 go runn hello.go命令后就会看到输出Hello, world!

      对于一个独立的程序来说,命令源码文件永远只会也只能有一个。如果有与命令源码文件同包的源码文件,那么它们也应该声明属于main包

     

     2)什么是库源码文件?

       库源文件不能被直接运行,它仅用于存放程序实体(程序实体是变量、常量、函数、结构体、接口的统称)

     

     

    5、Go get 命令

      命令go get会自动从一些主流公用代码仓库下载目标代码包,并把它们安装到GOPATH包含的第1工作区的相应目录中。如果存在GOBIN,那么仅包含命令源码文件的代码包会被安装到GOBIN指向的那个目录

     

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

     

    6、Go 语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的?

      按照代码的执行顺序 从上往下 每个引入的初始化。

      

     

     

     

  • 相关阅读:
    学习进度笔记06
    学习进度笔记05
    学习进度笔记04
    学习进度笔记03
    学习进度笔记02
    周总结13
    周总结12
    周总结11
    人月神话阅读笔记3
    第一阶段冲刺10
  • 原文地址:https://www.cnblogs.com/yuxiaoba/p/9491847.html
Copyright © 2020-2023  润新知