zoukankan      html  css  js  c++  java
  • [Golang学习笔记] 01 工作区和GOPATH

    Go语言3个环境变量:

    • GOROOT:GO语言按照根路径,也就是GO语言的安装路径。
    • GOPATH:若干工作区目录的路径。是我自己定义的工作空间。
    • GOBIN:GO程序生成的可执行文件(executable file)的路径。

    工作区和GOPATH:

    代码包导入路径:
    Import “github.com/labstack/echo”
    在工作区中,一个代码包的导入路径实际上就是从src子目录,到该包的实际存储位置的相对路径。

    某个工作区的src子目录下的源码文件在安装后会被放置到当前工作区的pkg子目录下对应的目录中,或者被直接放置到该工作区的bin子目录中。

    面试题:设置GOPATH有什么意义?

    答:GOPATH是Go语言的工作目录,是一个目录的路径,每一个路径代码一个Go语言工作区。
    利用这些工作区放置Go 语言的源码文件,安装后的归档文件和可执行文件。
    GO语言在生命周期的所有操作(编码,依赖管理,构建,测试,安装等)基本都围绕GOPATH和工作区进行的。
    意义在于代码结构的分层。
    • 源码文件放在工作区的src目录
    • 归档文件放在工作区的pkg目录
    • 可执行文件放在工作区的bin目录
    • 归档文件的相对目录与 pkg 目录之间还有一级目录,叫做平台相关目录。



    构建和安装 Go 程序的过程:
    构建命令:go build
    构建->库源码文件->临时目录
    意义在于检查和验证
    构建->命令源码文件->源码文件所在目录

    安装命令:go install
    安装->构建->链接->搬运到指定目录
    (如果安装是库源码源文件,那么就在pkg目录的某个子目录中)
    (如果安装是命令源码文件,那么就在bin目录的某个子目录中,或GOBIN)


    思考题:

    1. GO语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的?
    三个纬度延伸总结回答:

    总执行顺序的角度
    引入的包 -> 当前包的变量常量 -> init()[多个同一包则按照顺序执行] -> main函数
    依赖包执行顺序
    被依赖的总是优先执行初始化,一个包只会被初始化一次。 a引入b,b引入c,则执行顺序c -> b -> a
    单个包执行顺序的角度
    总的前提:按照包中源文件名的字典顺序来排序执行。
    当前包排序后的变量常量 -> 排序后的init()
    2. 如果在多个工作区中都存在导入路径相同的代码包会产生冲突吗?
    不冲突,因为按顺序找到所需要的包就不往后找了

    本学习笔记是仅为了总结自己学到的Go语言核心知识,方便以后回忆,文中部分内容摘录自极客时间的《Go语言核心36讲》专栏,如有侵权,请联系我删除。

  • 相关阅读:
    cs231n--详解卷积神经网络
    Spring 2017 Assignments2
    深度神经网络基础
    cs231n官方note笔记
    Spring 2017 Assignments1
    问题
    win7下解决vs2015新建项目,提示“未将对象引用设置到引用实例“的问题
    项目二:人脸识别
    ubutu强制关闭应用程序的方法
    将caj文件转化为pdf文件进行全文下载脚本(ubuntu下亲测有用)
  • 原文地址:https://www.cnblogs.com/fyql/p/10182254.html
Copyright © 2011-2022 走看看