go package 权限问题

2021-08-03 15:59:19 +08:00
 yujianwjj

假设一个项目的布局如下:

pkg/
    cache/
          redis/redis.go       // package xxx/pkg/cache/redis
          memory/memory.go     // package xxx/pkg/cache/memory
          utils.go             // package xxx/pkg/cache
go.mod
main.go

在 redis.go 和 memory.go 中有些共性的方法或者功能,提取出来放在 utils.go 中,以大写字母开头的函数。

我希望 utils.go 中的代码只能被 pkg/cahce 下面的子包访问,不能被其他外部代码访问。

1581 次点击
所在节点    Go 编程语言
8 条回复
kidlj
2021-08-03 16:11:12 +08:00
pkg/cache 下建一个目录 internal,把 utils.go 放里边。

https://golang.org/doc/go1.4#internalpackages
yujianwjj
2021-08-03 16:18:42 +08:00
@kidlj 懂了,感谢
pabupa
2021-08-03 17:46:10 +08:00
一整个项目有一个 internal 就行,,不然代码提示的时候,选起来麻烦。
labulaka521
2021-08-03 17:54:43 +08:00
最好别用 pkg
feelinglucky
2021-08-03 18:49:04 +08:00
@labulaka521 同意,同时建议目录深度可以再平一点

pkg 有可能是放二进制可执行文件的地方,所以避免取类似的名字
abccccabc
2021-08-04 09:53:04 +08:00
楼主,你最终是怎样处理的?我也想学习一下,看英文文档真是头疼。
joesonw
2021-08-04 10:28:22 +08:00
@feelinglucky pkg 在 go 里就是放公用库的地方. 不过是 go standard layout 还是知名项目, 如 kubernetes 皆是如此.
securityCoding
2021-08-04 16:58:57 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/793408

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX