4.go中的包

一、概念

包:是多个go文件得集合,多个文件得首行声明得包名一致,他们就属于同一个包。
注意:

1.同包名得go文件必须放在一个文件夹下。不能放在不同得文件夹下。
2.包名可以和文件夹名不一样,包名不能包含 - 符号。
3.包名和文件名尽量保持一致,因为vscode下包名和文件名不一致总是有限制,在linux服务器下不一致完全没有问题
4.go文件中的函数的"首字母"必须大写。在go中规定 函数要想由外部导入和使用必须大写,首字母小写只能内部使用

二、定义

在go文件中首行定义,格式如下:

package 包名

三、导入包

1.导入包

import 包名

2.别名

import 别名 "包名"

3.匿名引入

如果引入一个包的时候为其设置了一个特殊 _ 作为包名,那么这个包的引入方式就是称为匿名引入。一个包被匿名引入的目的主要是为了加载这个包,从而得的这个包中的资源得以初始化。被匿名引入得包中得init 函数将被执行并且仅执行一次。
格式如下:

import _ "包名"

四、go mod

1.go mod init

此命令得作用主要是:在项目下创建一个go.mod文件。此时这个项目就变成了一个模块。在导入自定义包的时候,就会以当前路径为基础进行包的导入。

2.包名和文件名同名

在linux中编写实例,vscode中总是不成功,有限制
在linxu目录结构如下:

[root@node-2 data]# tree go_project
go_project/
├── go.mod
├── main.go
└── testpackage
    ├── a.go
    └── b.go
2.1 设置mod名称
[root@node-2 data]# cd go_project/
[root@node-2 go_project]# go mod init hellogin
[root@node-2 go_project]# cat go.mod 
module hellogin

go 1.20
2.2 创建自定义包
[root@node-2 go_project]# mkdir testpackage/
[root@node-2 go_project]# cd testpackage
[root@node-2 testpackage]# cat a.go 
package testpackage
import "fmt"

func T1(){
 fmt.Println("T1111")
}
[root@node-2 testpackage]# cat b.go 
package  testpackage
import "fmt"

func T2(){
 fmt.Println("T222222")
}

3.3 main.go导入自定义包
[root@node-2 go_project]# cat main.go 
package main

//hellogin为模块名,也就是go mod init设置的
//testpackage是文件夹名称
import "hellogin/testpackage"

func main(){
    //这里的testpackage才是包名
	testpackage.T1()
	testpackage.T2()
	
}

运行结果如下:

[root@node-2 go_project]# go run main.go
T1111
T222222

3.包名和文件名不同

3.1设置mod名称

mod名称不变 和上边保持一致

3.2 创建自定义包

目录名称不变,包名变成summer

[root@node-2 testpackage]# cat a.go 
package summer
import "fmt"

func T1(){
 fmt.Println("T1111")
}
[root@node-2 testpackage]# cat b.go 
package summer
import "fmt"

func T2(){
 fmt.Println("T222222")
}

3.3 main.go导入自定义包
package main

import "hellogin/testpackage"

func main(){
	summer.T1()
	summer.T2()
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值