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 <-文件名随意
//main.go
package main //项目目录根目录和main.go的包名都为main
import (
"test/Hello" //指定目录
)
func main() {
Hello.Hello() //调用Hello目录的hello.go中的Hello()函数
}
//hello.go
package Hello //包名为该文件所在的目录名
import "fmt"
func Hello() { //被跨目录调用的函数名首字母需要大写
fmt.Println("hello!!!")
}
0x02
快捷编译脚本,将脚本放在项目目录根目录下(src
同目录下):
//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'
//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