go手工引入包注意事项
本项目只是检测一些自建的包的引用关系需要注意的事项。
并没有引用第三方的包也没有进行依赖管理等。
testpackage项目目录文件结构:
并没有引用第三方的包也没有进行依赖管理等。
testpackage项目目录文件结构:
C:\Program Files\Go\src\testpackage>tree /f 文件夹 PATH 列表 卷序列号为 3AE9-D7D1 C:. │ go.mod │ main.go ├─imp //imp是包名 │ add.go //定义Gadd函数被main.go引用 │ sub.go //定义sub函数,作用是内部调用,不对外 └─internelimp interl.go //定义Intelfunc函数被imp包内的Gadd函数引用
main.go(主程序)
package main import ( "fmt" "testpackage/imp" ) /* 1.Go语言中不允许导入包而不使用 2.Go语言中不允许循环导入包 3.需要注意引用其他包的函数的首字母要大写. 4.代码放在$GOPATH/src目录下的话,导入包的路径是从$GOPATH/src+项目名称 这里项目名称为testpackage,包引入imp 5.引入的包内文件(库源文件)不能包含main函数 6.关于命令源文件: 如果一个 Go 源文件被声明属于 main 包,并且该文件中包含 main 函数,则它就是命令源码文件。 命令源文件属于程序的入口,可以通过Go语言的go run命令运行或者通过go build命令生成可执行文件。 7.库源文件:库源文件则是指存在于某个包中的普通源文件,并且库源文件中不包含 main 函数。 */ //init函数用来做一些初始化工作的 func init() { fmt.Println("-----main执行初始化工作-----") } func main() { fmt.Println("-----main执行开始------------------------------") ret := imp.Gadd(10, 20) fmt.Println(ret) //输出imp包内声明的变量Name fmt.Println(imp.Neaning) fmt.Println("----main执行成功,生成可执行文件-----------------") }
imp/add.go
package imp import ( //导入包规则: $GOPAH/src/项目名称/+引用目录 "testpackage/internelimp" "fmt" ) /* 1、标识符首字母大写标识对外可见 2、通常不对外的标识符都是要首字母小写 */ var Neaning = "我是imp包的变量Neaning-------" //首字母大写,别的包调用的话 func Gadd(a, b int) int { fmt.Println("----Gadd函数调用internelimp包开始-----")
//internelimp包内的Inelfunc函数 internelimp.Intelfunc() fmt.Println("----Gadd函数调用internelimp包结束-----") return a + b } /* 说明 1.init函数在包导入的时候自动执行 2.init函数没有参数也没有返回值 */ func init() { fmt.Println("---初始化Gadd函数开始 init----")
//同一个包内,内部引用,所以用小写,也不用加包名. su := sub(50, 40) fmt.Println(su) //-10 fmt.Println("---初始化Gadd函数结束 init----") //fmt.Println(Neaning) }
imp/sub.go
package imp import ( "fmt" ) //内部引用,若首字母为小写,则对外不可见 func sub(x, y int) int { fmt.Println("----我是sub,Gadd函数在调用我-----") ret := x -y return ret }
C:\Program Files\Go\src\testpackage\internelimp\interl.go
package internelimp import "fmt" //被其他包引用,首字母需大写 func Intelfunc() { fmt.Println("---Intelfunc函数被调用---") } func init() { fmt.Println("internelimp --------init()-----") }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?