V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
yujianwjj
V2EX  ›  Go 编程语言

go package 权限问题

  •  
  •   yujianwjj · 2021-08-03 15:59:19 +08:00 · 1693 次点击
    这是一个创建于 1217 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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 下面的子包访问,不能被其他外部代码访问。

    8 条回复    2021-08-04 16:58:57 +08:00
    kidlj
        1
    kidlj  
       2021-08-03 16:11:12 +08:00   ❤️ 1
    pkg/cache 下建一个目录 internal,把 utils.go 放里边。

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

    pkg 有可能是放二进制可执行文件的地方,所以避免取类似的名字
    abccccabc
        6
    abccccabc  
       2021-08-04 09:53:04 +08:00
    楼主,你最终是怎样处理的?我也想学习一下,看英文文档真是头疼。
    joesonw
        7
    joesonw  
       2021-08-04 10:28:22 +08:00
    @feelinglucky pkg 在 go 里就是放公用库的地方. 不过是 go standard layout 还是知名项目, 如 kubernetes 皆是如此.
    securityCoding
        8
    securityCoding  
       2021-08-04 16:58:57 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5871 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:06 · PVG 11:06 · LAX 19:06 · JFK 22:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.