GO--- 库源码文件

库源码文件

      • 如何把命令源码文件中的代码拆分到其他源码文件
        • 代码包声明基本规则:
        • 关键知识点:

除了命令源码文件,还能用 Go 语言编写库源码文件。
库源码文件不能被直接运行,它仅用于存放程序实体。只要遵从 Go 语言规范,这些程序实体就可以被其他代码使用。
这些“其他代码”可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中。
程序实体是什么?在 Go 语言中,它是变量、常量、函数、结构体和接口的统称。
我们总是会先声明(或者说定义)程序实体,然后再去使用。比如在上一篇的例子中,我们先定义了变量name,然后在main函数中调用fmt.Printf函数的时候用到了它。
再多说一点,程序实体的名字被统称为标识符。标识符可以是任何 Unicode 编码可以表示的字母字符、数字以及下划线“_”,但是其首字母不能是数字。

如何把命令源码文件中的代码拆分到其他源码文件

package main
 
import (
	"flag"
)
 
var name string
 
func init() {
	flag.StringVar(&name, "name", "everyone", "The greeting object.")
}
 
func main() {
	flag.Parse()
	hello(name)
}
package main
import "fmt"
 
func hello(name string) {
	fmt.Printf("Hello, %s!\n", name)
}

代码包声明基本规则:

1、同目录下的源码文件的代码包声明语句要一致,也就是说,他们要同属于一个代码包,这对于所有源码文件都是适用的。
2、源码文件声明的代码包的名称可以与其所在的目录名称不通。在针对代码包进行构建时,生产的结果文件的主名称与其父目录的名称一致。

关键知识点:

1、同意文件夹下,包的声明语句需要相同,代表同一个包。
2、包名不需要和其所在的文件夹名相同。
3、首字母大小写来代表可见性,大写Public/小写Private
4、模块级私有internal(仅能被该代码包的直接父包及其子包中的代码引用。

Q:如果俩个代码包的导入路径的最后一级是相同的,比如:a/lib和 b/lib,什么情况下会产生冲突,该如何解决
A: 如果两文件夹下所声明的包名相同,则必冲突,Error: redeclared,如果不相同,则不会冲突.
解决方式:给包设置别名

你可能感兴趣的:(Go)