GO内部包
结论先行
go通过func名字首字母大小写来控制类属性是否可以被外部包访问(包括但不局限于func、struct)
go通过internal文件夹(包括子目录)来决定是否为内部包
首先看下我的测试文件夹结构(记得先执行go mod init test
):
1 |
|
test.go
内容如下:
1 |
|
hello.go
1 |
|
test1.go
1 |
|
test2.go
1 |
|
大小写测试
Test1()和Hello()都是可以被package main和package test2访问的。
测试把Test1()和Hello()改成test1()和hello()之后,代码无法运行。
internal测试
如果把Hello()改成hello(),那么test2和main包都无法访问test1包下的Hello()方法。可是我想要test2能够访问Hello()但是main不能访问,应该怎么做?
1 |
|
test1文件夹下新建文件夹internal,把hello.go丢进去,同时更改文件内容的package
1 |
|
test2访问Hello()import "test/test1/internal"
没问题;
man如果也访问import "test/test1/internal"
,会提示use of internal package test/test1/internal not allowed (compile)go-staticcheck
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!