Golang package 相关概念

GOPATH的作用
GOPATH这个环境变量在编译中可以看作是编译的根目录,packages的搜索次序如下:

    • go解析器所在目录之下的src, 比如go在C:\go\bin, 那么就是c:\go\src
    • GOPATH指向的目录之下的src,比如GOPATH=c:/work/test/relative_path, 那么就是c:\work\test\relative_path\src

import相对路径
用一个实例说明

    • 目录结构
C:\work\test\relative_path\src>ls     
controllers  main.go  utils
    • utils相关代码
C:\work\test\relative_path\src\utils>ls     
auth.go      
C:\work\test\relative_path\src\utils>cat auth.go     
package utils          
func Test1() string {         
    return "Test 1"     
}
    • controllers相关代码
C:\work\test\relative_path\src\controllers>ls     
login.go      C:\work\test\relative_path\src\controllers>cat login.go     
package controllers          
import "utils"      
func Test2() string {         
    return utils.Test1()    
}
    • main.go代码
C:\work\test\relative_path\src>ls     
controllers  main.go  utils          
C:\work\test\relative_path\src>cat main.go package main         
 import (         
    "fmt" 
    "controllers"     
)          
func main() {         
    fmt.Println(controllers.Test2())     
}
    • 编译及运行
C:\work\test\relative_path\src>env GOPATH=c:/work/test/relative_path go build main.go          
C:\work\test\relative_path\src>main.exe     
Test 1
这个操作里面的要点就在于env GOPATH=c:/work/test/relative_path, 需要注意的是src这一层目录是必须的