Golang 包


2022 年 1 月 27 日, Learn eTutorial
1827

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

GO : Packages

Golang 中的包是什么?

在 Go 编程语言中,程序被组织成包。
包可以定义为同一目录中一起编译的源文件组。在一个源文件中定义的变量、类型、函数、方法、常量对同一包下的其他源文件可见。
简单来说,包可以定义为 Go 工作区中包含许多源文件的目录。每个 Go 程序都属于特定的包。每个程序都有一个公共包,即主包。

注意: 一个包由多个文件组成,这些文件共同构成一个包

如何在 Golang 中声明包?

包由关键字 `package` 后跟包名声明。声明包的语法如下所示。
示例:`package main`


package <package_name>

Go 中包的类型?

Golang 中有两种包类型

  1.   主包(可执行)
  2.   非主包(不可执行)  
    GO : Packages

Golang main() 包

每个 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 包

Golang 中的 `fmt` 包包含用于格式化和将输出打印到控制台的不同函数。`fmt` 包包含所有源文件中非常常用的格式,如 `Println`、`Printf` 和 `Print`。

GO : Packages
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 : Packages

在 Go 语言中,每种数据类型都有一个独特的格式说明符。

格式说明符 数据类型
%s 字符串
%d 整数
%g float
%t bool

该程序展示了 fmt 包下的不同打印函数


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

golang 中的数学包

 在 Go 编程语言中,`math` 包由所有数学函数组成。
用于将数学函数导入源代码的语法是


import “math”
Or
import (
“math”
)

`math` 包可用于不同的数学计算,例如

  1.   Abs 函数:生成数字的绝对值
    
    package main
    import (
     "fmt"
     "math"
        )
    func main() {
     fmt.Println(math.Abs(-1.3))
    }
    
    

    输出

    
    1.3
    
  2.   三角函数,如正弦、余弦、正切等。
    
    package main
    import (
     "fmt"
     "math"
        )
    func main() {
     fmt.Println(math.Sin(3))     
                   fmt.Println(math.Cos(10)) 
       
    }
    
    

    输出

    
    0.1411200080598672
    -0.8390715290764524
    
  3.   Log 函数计算对数 
    
    package main
    import (
     "fmt"
     "math"
        )
    func main() {
     fmt.Println(math.Log(9))
    }
    
    

    输出

    
    2.1972245773362196
    
  4.   mod、ceil、floor 函数
    
    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
    
  5.    Max 和 Min 函数
    
    package main
    import (
     "fmt"
     "math"
        )
    func main() {
     fmt.Println(math.Min(7, 5)) 
    fmt.Println(math.Max(7, 5)) 
    }
    
    

    输出

    
    5
    

如何在 Golang 中导入包?

在 Go 编程语言中,有两种将包导入 Go 源文件的方法。在我们之前的教程中,我们混合使用了这两种导入包的方式。

  1.   多重导入语句 导入 Golang 包的第一种方式
    
    // Multiple import statements
    import "fmt"
    import "time"
    import "math"
    import "math/rand"
    
    

    在多重导入语句中,包通过关键字 `import` 后跟用双引号括起来的包名导入。

  2.   分组导入语句 
    
    // Factored import statements
    import (
     "fmt"
     "time"
     "math"
        "math/rand"
    )
    
    

    在分组导入语句中,需要导入的包被括在括号 `( )` 中,而括号又以关键字 `import` 开头。这里 `fmt`、`time`、`math`、`rand` 是 Golang 中可用的不同类型的包。

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 等。