-
package
-
- 语法:package
- 语法:package
-
- 执行文件必须是:package main
-
- 规范:
- package与目录一直,类似Java的方式
- 每个子目录中只能存在一个package
- go的package是以绝对路径GOPATH来寻址的,不要用相对路径来import 例1(每个子目录只能有一个Package):
/*
package_name 属于目录 $GOSRC/hello.world/package_name.go
*/
package helloworld
import (
"fmt"
)
func PrintHelloWorld() {
fmt.Println("Hello World!")
}
/*
helloworld 属于目录 $GOSRC/hello.world/helloworld.go
*/
package main
import (
"helloworld"
)
func main() {
helloworld.PrintHelloWorld()
}
输出:
/*
E:/golang/bin/go.exe build -i [E:/code/golang/src/helloworld]
can't load package: package hello.world: found packages main (helloworld.go) and hello (package_name.go) in E:\code\golang\src\hello.world
错误: 进程退出代码 1.
*/
-
import
-
- 引用本地自定义包,是直接将$GOSRC作为根目录进行import 例1(正确的package命名):
/*
main.go 属于目录 $GOSRC/main/main.go
*/
package main
import (
"helloworld"
)
func main() {
helloworld.PrintHelloWorld()
}
/*
package_name 属于目录 $GOSRC/helloworld/package_name.go
*/
package helloworld
import (
"fmt"
)
func PrintHelloWorld() {
fmt.Println("Hello World!")
}
输出:
E:/code/golang/src/main/main.exe [E:/code/golang/src/main]
Hello World!
成功: 进程退出代码 0.
-
- 引用github上的包 在shell环境下执行命令行:go get github.com/Unknwon/goconfig 可以看见$GOSRC/github.com/Unknwon/goconfig目录
/*
main.go 属于目录 $GOSRC/main/main.go
*/
package main
import (
"fmt"
"helloworld"
"log"
"github.com/Unknwon/goconfig"
)
func main() {
// print
helloworld.PrintHelloWorld()
//config
cfg, err := goconfig.LoadConfigFile("../resource/config.ini")
if err != nil {
log.Println("读取配置文件失败[../resource/config.ini]")
return
}
str, _ := cfg.GetValue(goconfig.DEFAULT_SECTION, "k1")
fmt.Printf("%s\n", str)
}
其中config.ini文件如下
#config.ini放在$GOSRC/resource目录
k1=v1
k2=v2
k3=v3
k4=v4
输出:
E:/code/golang/src/main/main.exe [E:/code/golang/src/main]
Hello World!
v1
附:goconfig使用方法