最近再玩golang,在研究如何导入自己的模块的时候很是头疼。基本golang槽糕的设计——project既要设置$GOPATH又对项目结构有一定的要求(缺少一定的自由)(当然golang糟糕的设计远不止这方面,越是深入了解越是讨厌)。google好久才知道如何配置。网上blog里要么是同一篇文章各种转载(他喵的还不注明),要么不够清晰,各种尝试后终于成功,记录如下:
进入终端输入命令
mkdir -p goproject/src/goproject cd goproject touch install cd src/goproject touch main.go cd .. mkdir test cd test && touch test.go
此时cd 到goproject应该是如下:
install src
cd到src应该如下
goproject
完整目录树如下
goproject
| ++++ install.sh
|++++ src
|++++|++++| goproject
|++++|++++|++++| main.go
|++++|++++|test
|++++|++++|++++|test.go
~/goproject%: cat install
#!/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 goproject<F2>
export GOPATH="$OLDGOPATH"
echo 'finished'
~/goproject%:cat src/goproject/test/test.go
package test
import "fmt"
func Test() {
fmt.Println("this is test package")
}
~/goproject%:cat src/goproject/main.go
package main
import test
func main() {
test.Test()
}
至此大功造成!!!
build项目
sh ./install
执行上一条命令之后的目录如下:
~/goproject%: bin/goproject
~/goproject%: this is test package
有疑问加站长微信联系(非本文作者)