《10节课学会Golang-01-Package》

微信关注【面试情报局】我们一起干翻面试官, 回复golang获取本文源码
视频地址:b站 10节课学会Golang,Go快速入门

Go 中,一个包(Package)是一组相关的代码文件的集合,编写代码时我们通常将相同模块的代码划分到一个Package中以便于重用和维护。每个 Go 程序都至少包含一个包,即 main 包,其中的 main 函数作为程序的入口点。我们首先来看第一个示例。

入门

golang中每个可以独立运行的 go 文件都至少包含三部分package main, import, func main()

package main // 定义了包名,只有定义了main的包才能独立运行

// 导入: 标准库和第三方库
import (
	"fmt" // 引入一个标准库包
)

// main 函数,程序的入口
func main() {
	// 调用标准库 fmt 在控制台打印 hello world 字符串
	fmt.Println("hello world")
}

// 通过命令行运行
// go run main.go
// go build main.go && ./main

如代码中package main表示当前代码隶属于main包。main包是一个特殊的包,我们的启动函数func main()必须要定义在package main下才能执行。

import()表示要导入标准库(也可以叫做导入一个包)或第三方包, 在实际开发者会引用许多标准库和第三方包来简化业务开发。这里我们导入一个fmt的标准库,这个标准库定义了一些函数在控制台输出一些信息,如Println()函数。

func main()函数是程序入口。我们可以通过这个函数来运行我们编写的代码,我们在func main()函数中调用fmt标准库的Println()函数在控制台打印一个字串hello world

导入标准库

上一个Demo简单介绍了import(), 这一节我们详细介绍import()import()函数用来导入标准库和第三方库,只有通过import()导入的标准库和第三方库我们才能在当前package下调用并且只能调用该package下已经导出的属性和函数。

package main

// 导入: 标准库和第三方库
import (
	"fmt"
	"math/rand" // 导入rand库
)

// main 函数,程序的入口。
func main() {
	// 调用标准库 fmt 在控制台打印 hello world 字符串
	// rand.Intn(10) 函数返回一个取值范围在[0,n)的伪随机int值,如果n<=0会panic。
	fmt.Println("hello world", rand.Intn(10))
}

其中 math/rand 是要导入的包的名称。一旦导入,就可以使用该包中导出的函数、变量和其他标识符,其中在func main()函数中调用标准库(math/rand)的rand.Intn(n)函数获取一个[0,n)的伪随机int值.

导出函数、变量、常量和类型

golang语言中想调用其它包的函数、变量、常量和类型需要被调用函数、变量、常量和类型是导出的(在同一包下不导出也可以使用), 导出一个函数、变量、常量和类型非常简单, 只需首字母大写就代表该函数或变量导出。这是一种访问控制机制,用于确保只有您希望外部使用的标识符才能公开。

math包如下(省略一些信息和注释方便查看)

package math

.........

// Integer limit values.
const (
	intSize = 32 << (^uint(0) >> 63) // 32 or 64 // 未导出, 其余package不能调用

	MaxInt    = 1<<(intSize-1) - 1 // 导出, 其余package能调用
	MinInt    = -1 << (intSize - 1)
  
  .........
)

由于 MaxIntMinInt 的名称以大写字母开头,因此它们可以被导出到 math 的外部使用。如果您在另一个包中导入了 math,则可以使用以下代码访问MaxInt

package main

// 导入: 标准库和第三方库
import (
	"fmt"
	"math"
)

// main 函数,程序的入口。
func main() {
	// 注意:在导入一个包时,你只能引用其中已导出的名字。任何“未导出”的名字在该包外均无法访问

	// 什么是导出?首字母大写代表导出,小写代表不导出
	//fmt.Println("intSize",math.intSize) // 引用未导出变量将报错
	fmt.Println("MaxInt", math.MaxInt)
}

另一方面, 由于intSize的名称以小写字母开头,因此它们只能在math中使用。如果您在另一个包中导入了 math,则不能访问这个标识符。

思考题

  1. 导入math包, 通过Sqrt函数求 9 的平方根并打印

系列文章

《10节课学会Golang-01-Package》
《10节课学会Golang-02-变量与常量》
《10节课学会Golang-03-函数》
《10节课学会Golang-04-流程控制》
《10节课学会Golang-05-结构体》
《10节课学会Golang-06-数组与切片》
《10节课学会Golang-07-Map》
《10节课学会Golang-08-Interface》
《10节课学会Golang-09-Goroutine》
《10节课学会Golang-10-Channel》

微信关注【面试情报局】我们一起干翻面试官, 回复golang获取本文源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HTML网页设计-期末大作业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值