golang第二天

  • package

    • 语法:package
    • 执行文件必须是:package main
    • 规范:
  1. package与目录一直,类似Java的方式
  2. 每个子目录中只能存在一个package
  3. 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使用方法

转载于:https://my.oschina.net/u/2321391/blog/658929

你可能感兴趣的:(golang第二天)