Loading... #0x00 一般语言没有规定项目目录结构,但golang有规定,这样可以保证一致性。 #0x01 Golang提供两个关键路径: - `GOROOT`指向GO的安装路径 - `GOPATH`指向项目路径 一般GO安装好后`GOROOT`会自动指向安装路径,所以一般不需要动。除非你安装了几个不同版本的GO,`GOROOT`设置为指定版本的路径即可。 `GOPATH`指向的项目目录目录结构: ``` 项目目录 <-GOPATH指向的路径 ├─bin <-编译后的可以执行文件存放的位置 ├─pkg <-编译的中间文件存放位置 └─src <-项目源代码存放位置 ├─项目 <-项目源代码存放位置 └─vendor <-第三方开源代码存放位置 ``` 一般只需要创建`src`,`bin` `pkg`编译时会自动创建。 ``` //指定GOPATH: //windows set GOPATH=项目目录路径 //Linux export GOPATH=项目目录路径 ``` 假如项目名为`test`,使用`go install test`进行编译 其项目文件结构: ``` . ├─bin <-bin目录会自动生成 | └─test <-编译后的可执行文件 └─src └─test ├─main.go <-作为入口,必须命名为main.go └─Hello <-文件夹名随意 └─hello.go <-文件名随意 ``` ```go //main.go package main //项目目录根目录和main.go的包名都为main import ( "test/Hello" //指定目录 ) func main() { Hello.Hello() //调用Hello目录的hello.go中的Hello()函数 } ``` ```go //hello.go package Hello //包名为该文件所在的目录名 import "fmt" func Hello() { //被跨目录调用的函数名首字母需要大写 fmt.Println("hello!!!") } ``` #0x02 快捷编译脚本,将脚本放在项目目录根目录下(`src`同目录下): ```shell //install.sh #!/usr/bin/env bash if [ ! -f install ]; then echo 'install must be run within its container folder' 1>&2 exit 1 fi CURDIR=`pwd` OLDGOPATH="$GOPATH" export GOPATH="$CURDIR" gofmt -w src go install test export GOPATH="$OLDGOPATH" echo 'finished' ``` ```bat //install.bat @echo off setlocal if exist install.bat goto ok echo install.bat must be run from its folder goto end : ok set OLDGOPATH=%GOPATH% set GOPATH=%~dp0 gofmt -w src go install test :end echo finished ``` Last modification:October 24, 2019 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 0 如果觉得我的文章对你有用,请随意赞赏