首页 > 技术分享 > Golang
收藏

Go语言包的细节

11/03 17:27
大潇博客 原创文章,转载请标明出处

包的引出

在实际开发中,往往需在不同文件中,调用其它文件定义的函数,比如实现在 main.go 中使用 util.go 文件中的函数


包的原理

包的本质实际就是创建不同的文件夹,来存放程序文件


包的概念

Golang 的每个文件都有属于的包,也就是说 Golang 是以包的形式来管理文件和项目的目录结构


包的三大作用

区分相同名字的函数、变量等标识符

当程序文件很多时,可以很好的管理项目

控制函数、变量等的作用域


包的相关说明

打包基本语法

package 包名


引入包的基本语法

import "包的路径"


包的快速入门



包使用时的细节和注意事项

1、在给文件打包时,每个包都有对应的文件夹,比如 utils 文件夹对应的包名就是 utils,文件的包名通常和文件所在的文件夹名一致,一般为小写字母


2、当一个文件要使用其它包中的函数或变量时,需要先引入对应的包,引入方式:

import "包名"

import (

"包名"

)

package 指令在第一行,然后是 import 指令

在 import 包时,首先要确认当前是什么模式(GOPATH 或 Go Module),Go Module 模式下从 go.mod 文件所在的目录开始引入即可,GOPATH 则为 $GOPATH 的 src 下开始


3、为了让其它包的文件,可以访问到本包的函数,在声明函数时,函数名首字母需要大写,这样才能实现跨包访问(类似其它语言的public)


4、访问其它包的函数或变量时,语法是:包名.函数名,比如:


5、Golang支持给包取别名,取别名后只能使用别名调用包内的函数和变量,原来的包名不能再使用


6、同一目录下可以有不同的 .go 文件,但所有 .go 文件必须声明相同的包名

即:确保同一目录下所有 .go 文件的 package 声明完全一致

建议包名与目录名一致,便于维护,比如:utils 目录中的文件,包名就是 utils

当包名不同时,即使只引入包,不做任何调用,编译或运行时也会报错


7、同包不同文件之间,不需要使用 import 语句导入,直接使用函数或变量等即可,且不用区分首字母大小写


8、包名可以与所在目录名不一致,但不推荐这样做,容易降低可读性(建议包名与所在目录名一致)

注意:包名可以与所在目录名不一致时,引入包时使用目录名(目录地址),调用包内的函数时,使用包名


9、同一个包内,不能有相同的函数名(包括变量名等),否则报重复定义的错误

这里主要指同包不同文件,同文件内更不可以有相同的函数名,即使参数不同(Golang没有重载)


10、不支持多目录下声明相同的包,以下是多目录不同包的使用

把上面 db 目录中的包名 utils 时(多目录下声明相同的包),会报错


11、如果要编译成一个可执行程序文件,就需要将这个包声明为 main,即:package main,这是一个语法规范(main 包是入口)

如果写库文件等,包名可以自定义


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311