Go允许我们定义自己的包。正如我们在第1章中讨论过的,包是一组代码,它们都做类似的事情。fmt包格式化输出,math包处理数字,strings包处理字符串,等等。我们已经在多个程序中使用了来自每一个包的函数。

  • 能够在程序之间使用相同的代码是包存在的主要原因之一。如果你的部分代码在多个程序之间共享,你应该考虑将它们移到包中。

创建一个新包

image-20201026144652642

  • 需要包外使用的资源需要首字母大写。

将包导入程序

import (
	"awesomeProject/src/myppage"
	"fmt"
)

image-20201026150551638


包命名规范

使用包的开发人员每次调用包中的函数时都需要输入包名。(想想fmt.Printf、fmt.Println、fmt.Print等)为了尽可能地使之不那么痛苦,包名应该遵循以下几个规则:

  • 包名应全部为小写
  • 如果可能的话,应该是一个词。如果需要两个词,不应该用下划线分隔,第二个词也不应该大写。(strconv包就是一个例子。)
  • 如果含义相当明显,名称应该缩写(如fmt)
  • 导入的包名可能与本地变量名冲突,所以不要使用包用户可能也想使用的名称。(例如,如果fmt包被命名为format,那么导入该包的任何人如果把一个局部变量也命名为format,则将面临冲突的风险)

包限定符

当访问从不同包导出的函数、变量或类似的东西时,你需要通过在函数或变量前面输入包名来限定它们的名称。但是,当访问定义在当前包中的函数或变量时,则不应该限定包名。


常量

  • 许多包导出常量:从不更改的命名值。

常量声明看起来很像变量声明,具有名称、可选的类型和常量值。但规则略有不同:

  • ·使用const关键字而不是var关键字。

  • 必须在声明常量时赋值;不能像变量那样以后赋值。

  • ·变量有:=短变量声明语法,但是常量没有等效的语法。

    • image-20201026145540962
  • 与变量声明一样,你可以省略类型,它将从分配的值推断出来

    • image-20201026145634135
  • 变量的值可以变化,但是常量的值必须保持不变。试图为常量分配新值将导致编译错误。这是一个安全特性:常量应该用于不会更改的值。



本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

切片 上一篇
数组 下一篇