📜  GO 打包,导入和可见性(1)

📅  最后修改于: 2023-12-03 15:01:00.605000             🧑  作者: Mango

GO 打包,导入和可见性

GO是一门静态类型的编程语言,它具有很好的并发性和好的内存管理。在GO中,每个文件都属于一个包。GO包需要导入才能被其他的GO文件使用。本文将介绍如何打包GO文件,如何导入包以及GO包的可见性。

打包GO文件

在GO中,文件组织成包,每个包都有一个唯一的名称。包名称通常与文件夹名称相同,因此包名称应遵循标准文件夹命名约定(例如,小写字母和下划线)。

GO源代码文件使用.go扩展名。

一个简单的GO包由以下几部分组成:

  1. package声明 :每个源文件都必须以package声明开头,表示该文件属于哪个包。
  2. 导入的包列表 :包括所需的导入的其他的包。
  3. 其他声明 :包括变量声明,函数声明,类型声明等等。

我们来看一个简单的示例:

package mypackage

import "fmt"

func Hello() {
	fmt.Println("Hello, World!")
}

func privateFunc() {
	fmt.Println("This is private function.")
}

在上面的示例中,我们首先使用package声明指定myapackage是我们的包名称,然后引入了fmt包,以便我们使用它的功能。然后定义了两个函数Hello和privateFunc。

导入包

当我们想要使用其他的GO包提供的类型,函数或变量时,我们需要使用import语句将它导入到我们的代码中。

我们来看一个使用fmt包的例子:

package main

import "fmt"

func main() {
	fmt.Println("Hello, World!")
}

在上面的示例中,我们使用import声明导入了fmt包。然后在main函数中调用了Println函数。

包的可见性

GO包中的类型,函数或变量如果要被其他包使用,它们的名称必须是可导出的。可导出名称以大写字母开头。这是GO语法约定,被称为公共名称或公共标识符。不可导出的名称以小写字母开头。

我们来看一个示例:

package mypackage

import "fmt"

func Hello() {
	fmt.Println("Hello, World!")
}

func privateFunc() {
	fmt.Println("This is private function.")
}

type MyStruct struct {
	PublicField  string
	privateField string
}

在上面的示例中,我们定义了一个名为MyStruct的结构体。它有两个字段,PublicField和privateField。PublicField是可导出的,因为它以大写字母P开头,因此可以在其他包中使用。privateField是不可导出的,因为它以小写字母p开头,只能在此包内使用。

结语

在GO中,包是组织代码的基本单位,import语句用于导入其他包中的代码,可见性使我们能够控制哪些标识符可以从包中导出。有了这些概念,我们就可以更好地组织和管理我们的代码库。