库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(遵从Go语言规范)。
其他代码的位置:
在Go语言中,程序实体是变量、常量、函数、结构体和接口的统称。我们总是先声明(或定义)程序实体,然后再去使用。程序实体的名字被统称为标识符(可以是任何Unicode编码可以表示的字母字符、数字以及下划线,但是首字母不能为数字)。从规则上来看,可以使用中文作为变量的名字。
下面有样例代码demo4.go:
package main
import (
"flag"
)
var name string
func init() {
flag.StringVar(&name, "name", "everyone", "The greeting object.")
}
func main() {
flag.Parse()
hello(name)
}
函数hello()被声明在另外一个源码文件中:
// 需在此处添加代码。[1]
import "fmt"
func hello(name string) {
fmt.Printf("Hello, %s!\n", name)
}
导入路径:源码文件所在的目录相对与src目录的相对路径就是它的代码包导入路径, 限定符:实际使用其程序实体时给定的限定符要与它声明所属的代码包名称对应
通常情况下,总是让声明的包名与其父目录的名称一致。
名称的首字母大写的程序实体才可以被当前包外的代码引用,否则它就只能被当前包内的代码引用。
Go1.5之后的版本,通过创建internal代码包让一些程序实体仅仅能被当前模块中的其他代码引用。这是Go语言的第三种访问权限:模块级私有。
internal代码包中声明的公开程序实体仅能被该代码的直接父包及其子包中的代码引用。引用之前先要导入这个internal包,对于其他代码包,导入行为是非法的,不能通过编译。