V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
yujianwjj

go package 权限问题

  •  
  •   yujianwjj · Aug 3, 2021 · 2100 views
    This topic created in 1731 days ago, the information mentioned may be changed or developed.

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

    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 replies    2021-08-04 16:58:57 +08:00
    kidlj
        1
    kidlj  
       Aug 3, 2021   ❤️ 1
    pkg/cache 下建一个目录 internal,把 utils.go 放里边。

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

    pkg 有可能是放二进制可执行文件的地方,所以避免取类似的名字
    abccccabc
        6
    abccccabc  
       Aug 4, 2021
    楼主,你最终是怎样处理的?我也想学习一下,看英文文档真是头疼。
    joesonw
        7
    joesonw  
       Aug 4, 2021
    @feelinglucky pkg 在 go 里就是放公用库的地方. 不过是 go standard layout 还是知名项目, 如 kubernetes 皆是如此.
    securityCoding
        8
    securityCoding  
       Aug 4, 2021
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2706 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 14:56 · PVG 22:56 · LAX 07:56 · JFK 10:56
    ♥ Do have faith in what you're doing.