开发一个任务看板,统计工时,汇总周报
golang安装路径,相当于java语言的JAVA_HOME
工作目录,允许设置多个路径,但下载的包只存在第一个路径。和各个系统环境多路径设置一样,windows用;,linux(mac)用:分隔。 我们可以把每个GOPATH下的bin都加入到PATH中。
export GOROOT=$HOME/go export GOPATH=$HOME/gopath export PATH=$PATH:$GOROOT/bin:$GOPATH/bin GOROOT=D:\go GOPATH=D:\GoWorkSpace PATH=%GOROOT%\bin;%GOPATH%\bin;... # “...”表示其他路径整个工作空间目录结构如下:
GoWorkSpace // GoWorkSpace为GOPATH目录 -- bin // golang编译可执行文件存放路径,可自动生成。 -- pkg // golang编译的.a中间文件存放路径,可自动生成。 -- src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径(即在此路径下执行上述命令)。 -- common 1 -- common 2 -- common utils ... -- myApp1 // project1 -- models -- controllers -- others -- main.go -- myApp2 // project2 -- models -- controllers -- others -- main.go -- myApp3 // project3 -- models -- controllers -- others -- main.go 注意不要把src目录和java项目的src目录混淆,误认为GoWorkSpace就是具体项目的根目录。 idea开发工具open项目选择myApp目录,非GoWorkSpace目录
golang工程的依赖包经常使用go get命令来获取,例如:go get github.com/kardianos/govendor ,会将依赖包下载到GOPATH的路径下。
go get -u -v github.com/kardianos/govendor 常见的命令如下,格式为 govendor COMMAND。
| 命令 | 功能 | | :------------ :|:---------------| |init |初始化 vendor 目录| |list |列出所有的依赖包| |add |添加包到 vendor 目录,如 govendor add +external 添加所有外部包add PKG_PATH添加指定的依赖包到 vendor 目录| |update |从 $GOPATH 更新依赖包到 vendor 目录| |remove |从 vendor 管理中删除依赖| |status |列出所有缺失、过期和修改过的包| |fetch |添加或更新包到本地 vendor 目录| |sync |本地存在 vendor.json 时候拉去依赖包,匹配所记录的版本| |get |类似 go get 目录,拉取依赖包到 vendor 目录|
对于 govendor 来说,依赖包主要有以下多种类型:
| 状态 | 缩写状态 | 含义 |
|---|---|---|
| +local | l | 本地包,即项目自身的包组织 |
| +external | e | 外部包,即被 $GOPATH 管理,但不在 vendor 目录下 |
| +vendor | v | 已被 govendor 管理,即在 vendor 目录下 |
| +std | s | 标准库中的包 |
| +unused | u | 未使用的包,即包在 vendor 目录下,但项目并没有用到 |
| +missing | m | 代码引用了依赖包,但该包并没有找到 |
| +program | p | 主程序包,意味着可以编译为执行文件 |
| +outside | 外部包和缺失的包 | |
| +all | 所有的包 |
常用指令说明
# 安装govendor go get -u -v github.com/kardianos/govendor #将GOPATH中本工程使用到的依赖包自动移动到vendor目录中#说明:如果本地GOPATH没有依赖包,先go get相应的依赖包 govendor add +external 或使用缩写: govendor add +e # 查看使用的包列表 govendor list -v fmt # 从线上远端库添加或更新最新的依赖包 govendor fetch golang.org/x/net/context # 从线上远端库添加或更新标签或分支等于v1的依赖包 govendor fetch golang.org/x/net/context@=v1docker run --name mysql-8.0 \ -e MYSQL_ROOT_PASSWORD=root \ -p 3308:3306 \ -v /apps/data/mysql/conf-8.0:/etc/mysql/conf.d \ -v /apps/data/mysql/data-8.0:/var/lib/mysql -d mysql:8.0 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_unicode_ci alter user'root'@'%' IDENTIFIED BY 'root'; flush privileges; ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; FLUSH PRIVILEGES;set GO111MODULE=on go mod tidy (一)Windows 下编译Linux 64位可执行程序:
SET CGO_ENABLED=0 //不设置也可以,原因不明 SET GOOS=linux SET GOARCH=amd64 通过 go env 查看设置是否成功。 (二)Linux 下编译Windows可执行程序:
export CGO_ENABLED=0 export GOOS=windows export GOARCH=amd64 通过 go env 查看设置是否成功。 go build hello.go