5.Golang中的包(package)

  作者: thtomatic  分类: Golang   评论: [ 0 ] 条  浏览: [ 18 ] 次

在做项目中,要处理大量的代码,这些代码一般放置在不同的代码文件中,为了便于管理这些代码文件,可以将功能相关的代码文件放到一个包(package)中

一、声明包

GO语言中使用package语句声明包,语法格式如下:

package  包名

声明包需要注意如下问题

1.package语句应该放在代码文件的第一行

2.在每个代码文件中只能有一个包声明语句

二、导入包

为了能够使用一个保重的代码元素,需要使用import语句导入包,import语句应位于package语句之后,语法格式如下

import (

        包路径1

        包路径2

        包路径3

        .........

import语句的括号中指定1~n个包路径。如果只导入一个包,则小括号"()"可以省略

三、自定义包

包本质上是一个文件夹,例如在demo文件夹下创建pkg1和pkg2两个包,其中每个包包含一个hello.go文件


pkg1包中hello.go文件代码如下


package pkg1 //声明当前文件所在的包是pkg1

var Money = 2000 //声明变量,为了在其他包中访问这个变量,需要将其设置为公有的,这需要将首字母大写

var xyz = 100 //由于其首字母未大写,因此此变量是私有的

func Add(a, b int) int { //声明Add函数,为了在文件外部访问,需要将其首字母大写
	return a + b
}

func sum(a, b int) int { //声明此函数是私有的
	return a + b
}
pkg2包中的hello.go文件代码如下


package pkg2

var Money = 100

在main.go中使用pkg1包和pkg2包中的代码元素,代码如下


package main

import (
	"fmt"
	"gin_web/demo03/pkg1"
	"gin_web/demo03/pkg2"
)

func main() {
	var str1 = "Hello World"
	fmt.Println(str1)
	fmt.Println(pkg1.Money)
	fmt.Println(pkg2.Money)
	var x, y = 1, 2
	fmt.Printf("%d + %d = %d\n", x, y, pkg1.Add(x, y))
}


四、为包提供别名

为了防止导入的包名发生冲突,可以在导入包时为其提供一个别名,语法如下:

import 包别名  包路径

代码如下:

package main

import (
	"fmt"
	pk1 "gin_web/demo03/pkg1"
	pk2 "gin_web/demo03/pkg2"
)

func main() {
	var str1 = "Hello World"
	fmt.Println(str1)
	fmt.Println(pk1.Money)
	fmt.Println(pk2.Money)
	var x, y = 1, 2
	fmt.Printf("%d + %d = %d\n", x, y, pk1.Add(x, y))
}

 五、匿名导入

在Go语言中导入一个包而不使用它,则会发生"imported and not used"编译错误,这种情况下可采用匿名导入,就是用下划线"_"作为包的别名

代码如下:

package main

import (
	"fmt"
	pk1 "gin_web/demo03/pkg1"
	pk2 "gin_web/demo03/pkg2"
	_ "math/rand"
)

func main() {
	var str1 = "Hello World"
	fmt.Println(str1)
	fmt.Println(pk1.Money)
	fmt.Println(pk2.Money)
	var x, y = 1, 2
	fmt.Printf("%d + %d = %d\n", x, y, pk1.Add(x, y))
}

版权所有:《thtomatic》 => 《5.Golang中的包(package)
本文地址:https://ask.mykeji.net/golang/275.html
除非注明,文章均为 《简单记录》 原创,欢迎转载!转载请注明本文地址,谢谢。


发表评论:

    44.67ms