在本教程中,您将学习 Golang 中的包。Go 编程语言使用不同的包,我们将详细讨论它们,以及如何将它们导入到您的程序中,如何编写包等。

在 Go 编程语言中,程序被组织成包。
包可以定义为同一目录中一起编译的源文件组。在一个源文件中定义的变量、类型、函数、方法、常量对同一包下的其他源文件可见。
简单来说,包可以定义为 Go 工作区中包含许多源文件的目录。每个 Go 程序都属于特定的包。每个程序都有一个公共包,即主包。
注意: 一个包由多个文件组成,这些文件共同构成一个包
包由关键字 `package` 后跟包名声明。声明包的语法如下所示。
示例:`package main`
package <package_name>
Golang 中有两种包类型

每个 Go 编程语言都以 `package main` 开始其代码。Go 源代码中的第一行是 `main` 函数的包声明。源代码从 `main` 函数 `main()` 开始执行,只有当负责执行的包存在于源文件(即 `package main`)中时,执行才会成功。
package main //package declaration
import "fmt"
func main() { // program starts execution
fmt.Println("Hello world ")
} //program terminates execution
输出
Hello world
Golang 中的 `fmt` 包包含用于格式化和将输出打印到控制台的不同函数。`fmt` 包包含所有源文件中非常常用的格式,如 `Println`、`Printf` 和 `Print`。

| Printf | Println | |
|---|---|---|
| fmt.Print() | fmt.Println() | fmt.Printf() |
| 打印括号 () 中的字符串或内容。 | Printf 的功能与 Print 类似,它默认打印一个新行。 | 将格式化字符串打印到控制台。 |
| 例如 fmt.Print(“golang”) | 例如 fmt.Println(“golang”) | 例如 fmt.Printf(“%s”,golang) %s 将替换为 golang 值 |
在 golang 中,根据数据类型使用不同的格式说明符,例如 %s、%d 等。在下面的程序中

在 Go 语言中,每种数据类型都有一个独特的格式说明符。
| 格式说明符 | 数据类型 |
|---|---|
| %s | 字符串 |
| %d | 整数 |
| %g | float |
| %t | bool |
package main
import "fmt"
func main() {
site := "Learn eTutorials"
fmt.Print("golang")
fmt.Println("golang")
fmt.Println("-----------------------")
fmt.Println("golang")
fmt.Print("golang")
fmt.Println("")
fmt.Printf("%s",site)
}
输出
golanggolang ----------------------- golang golang Learn eTutorials
在 Go 编程语言中,`math` 包由所有数学函数组成。
用于将数学函数导入源代码的语法是
import “math”
Or
import (
“math”
)
`math` 包可用于不同的数学计算,例如
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Abs(-1.3))
}
输出
1.3
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Sin(3))
fmt.Println(math.Cos(10))
}
输出
0.1411200080598672 -0.8390715290764524
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Log(9))
}
输出
2.1972245773362196
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Mod(14, 5)) // mod return remainder after div
fmt.Println(math.Ceil(45.5)) // rounds to up
fmt.Println(math.Floor(39.7)) // rounds to down
}
输出
4 46 39
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Min(7, 5))
fmt.Println(math.Max(7, 5))
}
输出
5
在 Go 编程语言中,有两种将包导入 Go 源文件的方法。在我们之前的教程中,我们混合使用了这两种导入包的方式。
// Multiple import statements
import "fmt"
import "time"
import "math"
import "math/rand"
在多重导入语句中,包通过关键字 `import` 后跟用双引号括起来的包名导入。
// Factored import statements
import (
"fmt"
"time"
"math"
"math/rand"
)
在分组导入语句中,需要导入的包被括在括号 `( )` 中,而括号又以关键字 `import` 开头。这里 `fmt`、`time`、`math`、`rand` 是 Golang 中可用的不同类型的包。
导出的名称在包外部可见,并以大写字母开头,
未导出的名称是包内部可见的关键字,不导出且不以大写字母开头。
package main //package
import ( // Factored import statements
"fmt"
"math"
)
func main() {
// MaxInt64 is an exported name
fmt.Println("Max value of int64: ", int64(math.MaxInt64))
// Phi is an exported name
fmt.Println("Value of Phi (?): ", math.Phi)
// pi starts with a small letter, so it is not exported
fmt.Println("Value of Pi (????): ", math.pi)
}
输出
_/home/Tmkxll ./prog.go:16:38: cannot refer to unexported name math.pi ./prog.go:16:38: undefined: math.pi
注意: 可以通过使用 `math.Pi` 来解决错误
解决后,结果输出如下所示
输出
Max value of int64: 9223372036854775807 Value of Phi (?): 1.618033988749895 Value of Pi (????): 3.141592653589793
在接下来的教程中,我们将详细讨论 golang 中可用的一些其他包,如 time、rand 等。