美文网首页
01. Go配置

01. Go配置

作者: 哈哈大圣 | 来源:发表于2020-03-06 00:15 被阅读0次

    一、环境变量配置

    1. $GOROOT: go环境变量
    2. $GOPATH: 工作目录

    1). Linux环境

    1. 解压go的压缩包到喜欢的路径,比如 $HOME/app
    2. vim $HOME/.profile
    export GOROOT=$HOME/app/go/
    export GOPATH=$HOME/workspace/go:$HOME/other/go/
    export PATH=$PATH:$GOROOT/bin:${GOPATH//://bin:}/bin
    

    GOPATH 可以配置多个,但是 包管理默认是下载到第一个目录下,建议把$GOPATH 第一个值设置为常用的全局工作目录,例如以后安装一些Go 语言工具时,它们的bin执行文件可以在这里找到

    1. 如果向让所有用户使用
      • 将 go 安装到 /usr/local
    vim /etc/profile
    
    export GOROOT=/usr/local/go/
    export GOPATH=$HOME/workspace/go/:$HOME/other/go/
    export PATH=$PATH:$GOROOT/bin:${GOPATH//://bin:}/bin
    

    2). Win环境

    1. 配置系统环境变量
    GOROOT="c:\go"
    
    1. 将环境变量添加到PATH
    ;%GOROOT%\bin
    
    1. 检查 cmd
    go version
    

    二、GO常用命令

    1). GO安装文件

    1. $GOROOT文件

      • api文件夹:存放了包含公开的变量、常量、函数等API的列表,用于Go语言API检索
      • bin文件夹:主要用于存储标准命令执行文件,例如默认的go、godoc、gofmt三件套
      • doc文件夹:存放了标准库的文档,使用godoc-http=:6060 (?) 命令可以启动文档服务,通过本地6060端口即可访问。
      • pkg文件夹:用于存放编译Go语言标准库生成的文件,这个文件夹里面的文件根据不同系统与架构会有所不同,在$GOROOT这个文件中的pkg一般只有标准库的编译缓存文件,这些文件编译 Go 程序时起到很大作用,例如 pkg/tool/linux_amd64/目录下就有很多go tool命令的执行文件
      • src文件夹:存放的是 Go 语言自己的源代码(包括标准库),阅读源码时就是看这里面的内容
    2. $GOPATH (工作空间结构)

      • bin: 存放go install生成的可执行文件
      • pkg: 存放go编译生成的文件
      • src: 开发的Go项目的源代码,不同工程项目的代码以包名区分

    $GOPATH 可以有很多个,如果有两个Go 语言开发工作区,可以使用冒号分隔两个变量路径,但是第一个$GOPATH会被作为默认的go get存放目录。

    2). 常用命令

    1. 格式 go command [arg]
    2. 常见command命令
    command 功能
    build 编译源代码包和依赖
    clean 删除对象文件
    doc 显示Go包或程序实体的文档
    env 打印输出Go语言环境的变量信息
    bug bug提交程序
    fix 修复程序
    fmt 格式化源码包中的代码
    generate 通过扫描Go源码中的go:generate注释来识别要运行的常规命令
    get 下载并安装指定的包与依赖
    install 编译并安装指定的包与依赖
    list 打印指定源码包的信息
    run 编译并运行Go程序
    test 测试一个源码包
    tool 运行一个指定的go tool
    version 打印输出Go环境版本
    vet 检查源码包中可能出现的错误
    go help [command] 查看帮助命令

    3). Go语言命令行参数

    1. 源代码分类
      命令源代码文件:可执行程序的入口
      库源代码文件:集中放置各种程序实体(全局常量、全局变量、接口、结构体、函数等)
      测试源代码文件:对前两种源代码文件中的程序实体的功能和性能进行测试,或者展现前两者中程序的使用方法。

    2. 程序编译

      • go build : 尝试编译当前目录的代码包,如果只有 库源码文件测试源码文件 则不会生成文件。
      • go build hello.go: 编译指定文件
      • go install: 将可执行文件移动到 $GOPATH/bin 让其成为全局命令
      • go run hello.go: 只运行,不会输出任何结果
    3. 编译命令常用参数选项

    参数选项 作用
    -a 这个选项用于强制重新编译所有相关的Go语言源代码包,包括标准库中的包。默认Go语言的依赖包如果已经构建过了,第二次就不会再构建,但如果需要对底层源码做出修改,就需要使用这个选项从头编译一次。
    -n 用于检查执行命令过程中实际会用到的命令,这个选项只输出要执行的命令,实际上并不会执行。
    -p 构建或测试时指定并行运行的程序数量,默认值是可用的CPU数量。
    -race 检查数据竞争问题,并发编程中会用到,只支持AMD 64架构。
    -v 打印被编译的包。
    -work 指定编译缓存工作目录,Linux 系统默认在/tmp 文件夹中。指定工作目录时,编译结束后不会自动删除缓存目录。
    -x 与上面的-n类似,打印编译过程中执行的命令,但这个选项会执行这些编译命令。除了上面这些选项

    --help或者go help查看帮助信息。使用go tool可以查看Go语言默认携带的一些工具

    go tool [command] -h
    

    3). Go语言包安装

    1. go get: Go自带的的包获取工具。
    go get github.com/example/go-cache
    

    执行这句命令之后,可以在$GOPATH的第一个路径的src/github.com目录中找到这个代码包的源代码。

    1. 目前go get命令所支持的VCS

      • Git
      • SVN
      • Mercurial
      • Bazaar
    2. go get [-?]:

      • -h: 显示帮助信息,
      • -d:只执行下载动作,不执行安装动作
      • -f:不检查已下载代码包的导入路径,需要与-u选项配合使用
      • -fix:下载代码包后先执行fix动作(修复代码兼容问题),然后再进行编译和安装。
      • -insecure:允许get命令使用不安全的HTTP协议下载代码包
      • -t:让get命令同时下载安装指定的代码包的测试源码文件中的依赖代码包
      • -u:更新已有代码包与依赖包。在默认情况下,get 命令不会下载本地已经存在的代码包,需要使用此选项更新代码包。
      • -v:打印要下载安装的代码包名称。
      • -x: 显示下载安装要执行的具体命令。

    4). 代码格式化

    1. go fmt ?.go: 格式化工具强制格式化
    2. 格式化选项
      • -l:显示需要格式化的文件。
      • -w:不将格式化结果打印到标准输出,而是直接保存到文件中。
      • -r:添加形如<原始内容>-><替换内容>的重写规则,方便批量替换。
      • -s:简化文件中的代码。
      • -d:显示格式化前后的不同(不写入文件),默认是false。
      • -e:打印所有的语法错误。默认打印每行的前10个错误。
      • -cpuprofile:支持调试模式,将相应的cpufile写入指定的文件
        • 替换栗子
    # 替换没有意义的括号
    $ gofmt -r "(a) -> " -w *.go
    
    # 去除多余的len(a)
    $ gofmt -r "a[n:len(a)] -> a[n:]" -w *.go
    
    # 调换两个参数位置a
    $ gofmt -r 'A.Func1(a,b) -> A.Fun2(b,a)' -w *.go
    

    一、语法规范

    1). 常用语法规范

    1. Go语言要求只有用到的包才能导入,如果导入一个代码包又不使用,那么编译时会报错。
    2. Go语言默认不需要分号结束每行代码,如果两行代码写在一行时才需要使用分号分隔,但是不建议这样书写代码。
    3. 编译之后使用go install就可以将这个简单的Go语言程序安装到本地$PATH中,这样这个程序就可以全局使用了。

    三、环境变量

    1. 显示环境变量
    go evn
    
    1. $GOOS: 目标操作系统,目前支持10种

      • Linux、Freebsd、Darwin、Windows、Android、Dragonfly、Netbsd、Openbsd、Plan 9和Solaris
    2. $GOARCH: 目前处理器架构,目前支持9种

      • ARM、ARM64、386、AMD64、PPC64、PPC64le、MIPS64、MIPS64le 和S390X

    在构建时指定上述两者就可以指定构建相应的Go语言程序。在任意环境编译任意平台的都能支持

    1. 案例:生成Win64的Go程序
    # 设置当前Shell会话变量
    $ GOOS=windows GOARCH=amd64 go build main.go
    

    相关文章

      网友评论

          本文标题:01. Go配置

          本文链接:https://www.haomeiwen.com/subject/pfqjrhtx.html