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
DCCooper

macOS 下的 golang 包名带汉字不能编译运行

  •  
  •   DCCooper · Jan 31, 2021 via iPhone · 5505 views
    This topic created in 1911 days ago, the information mentioned may be changed or developed.

    背景: 在公司刷 leetcode 的时候,为了方便查找,按照一道题一个文件夹区分的,所以 package 名字也就类似 leetcode_51_N 皇后

    公司 Linux 环境上这种组织形式是可以编译运行的,但是回家切换到 macOS 上就会出现 malformed import path invalid char:’皇’ 这样的报错。

    macOS 和 Linux 都用的 go1.15.7,没打开 go mod 。

    有遇到类似情况的哥们儿吗?教教我咋搞,或者提供另一种方式来区分下每道题(强迫症)

    Supplement 1  ·  Jan 31, 2021
    感谢老哥们的留言:
    归纳一下:
    1 、尽量使用英语
    2 、尝试自己动手管理
    3 、学好英语(瓦英语是没问题的~~~😹)
    4 、去喷股沟:-)
    5 、貌似没有解决办法

    ps:刷的力扣,所以都是中文。
    感谢老哥们热心答复,过年留守继续刷题了。。。
    Supplement 2  ·  Feb 1, 2021
    最新实践:
    结论:golang 支持中文作为包名
    方法:export GO111MODULE=off
    缺点:无法使用 go mod 管理依赖了,不过力扣的题应该用不到额外的库~

    感谢真心参与讨论的老哥们~
    问题解决了,又可以舒舒服服的刷题了,提前祝大家新年快乐,早日升级加薪!
    28 replies    2022-08-13 16:06:23 +08:00
    boris93
        1
    boris93  
       Jan 31, 2021 via Android
    用英文
    路径绝对不建议带中文
    DCCooper
        2
    DCCooper  
    OP
       Jan 31, 2021 via iPhone
    @boris93 英文还真没汉字认得快😂
    jeremaihloo
        3
    jeremaihloo  
       Jan 31, 2021 via Android
    其实你可以这个脚本方便查找的,代码注释里面写中文名字。查找的时候就可以用中文了,没必要路径用中文
    fiypig
        4
    fiypig  
       Jan 31, 2021 via iPhone
    命名用中文这习惯不好
    DCCooper
        5
    DCCooper  
    OP
       Jan 31, 2021 via iPhone
    @fiypig 只在这个自己的题库里用到了中文😅
    DCCooper
        6
    DCCooper  
    OP
       Jan 31, 2021 via iPhone
    @jeremaihloo 之所以这样做就是想类似于那种小卡片,看一眼就能想起来这道题是啥
    icebay
        7
    icebay  
       Jan 31, 2021
    那试试额外管理一份软链接?
    MaxLi77
        8
    MaxLi77  
       Jan 31, 2021
    退一步,用拼音也行啊
    dollck
        9
    dollck  
       Jan 31, 2021 via Android
    英语有点堪忧阿,楼主 qwq
    52coder
        10
    52coder  
       Jan 31, 2021
    在公司刷 leetcode 有点胆肥呀,养成良好习惯,用英文,leetcode 上题目标题不是英文吗?
    WebKit
        11
    WebKit  
       Jan 31, 2021 via Android
    我用 IDEA 带中文名字是可以的。
    no1xsyzy
        12
    no1xsyzy  
       Jan 31, 2021
    去 golang/go 提 issue 啊(
    MrKrabs
        13
    MrKrabs  
       Jan 31, 2021
    居然没人说股沟坏话
    tairan2006
        14
    tairan2006  
       Jan 31, 2021
    go 官方的包名规范是全小写字母啊。。下划线啥的都不要用
    zeroDev
        15
    zeroDev  
       Jan 31, 2021 via Android
    也许可能是编码问题?
    DCCooper
        16
    DCCooper  
    OP
       Jan 31, 2021   ❤️ 1
    @zeroDev 编码问题应该不存在,同一套代码,我旧的英特尔芯片 MacBookPro 没问题,M1 芯片的跑不了。
    jinliming2
        17
    jinliming2  
       Feb 1, 2021   ❤️ 1
    看起来与这个 Issue 相关: https://github.com/golang/go/issues/29101
    你可以试一试 go 1.16 rc 版。
    djoiwhud
        18
    djoiwhud  
       Feb 1, 2021 via Android
    英语烂的不建议做 it 行业。
    DCCooper
        19
    DCCooper  
    OP
       Feb 1, 2021 via iPhone   ❤️ 1
    @djoiwhud 老哥是早上刚起来没洗漱呢吧,啥时候说自己英语烂了...
    DCCooper
        20
    DCCooper  
    OP
       Feb 1, 2021 via iPhone
    @jinliming2 十分感谢!
    labulaka521
        21
    labulaka521  
       Feb 1, 2021 via iPhone
    @tairan2006 下划线可以用吧 测试文件就有下划线
    wszgrcy
        22
    wszgrcy  
       Feb 1, 2021 via Android   ❤️ 10
    我觉得不是楼主的问题,其他人在避重就轻,严格的说这个 bug 出现了,那么就应该解决,而不是找一些理由去回避,虽然这些理由看起来好像合理,但是这毕竟是个问题,那么就应该解决,不要把饭圈的那一套搞过来
    Leigg
        23
    Leigg  
       Feb 1, 2021 via iPhone
    这是 mac 上的 bug,提 bug
    yebo777
        24
    yebo777  
       Feb 1, 2021
    只看下面的回复还以为是楼主的问题。。。
    Daming
        25
    Daming  
       Feb 1, 2021 via Android
    我就喜欢枚举用中文,直观
    qiaocc
        26
    qiaocc  
       Jul 26, 2021
    +1, 我也遇到了. 官方还在讨论: https://github.com/golang/go/issues/45549
    yangyile
        27
    yangyile  
       Mar 12, 2022   ❤️ 2
    通过修改 go 源码即可解决:
    修改代码:
    /usr/local/go/src/cmd/vendor/golang.org/x/mod/module/module.go
    修改函数:
    func modPathOK(r rune) bool {
    if r < utf8.RuneSelf {
    return r == '-' || r == '.' || r == '_' || r == '~' ||
    '0' <= r && r <= '9' ||
    'A' <= r && r <= 'Z' ||
    'a' <= r && r <= 'z'
    }
    // return false // 修改这里使得包名和路径名支持更大的字符集合,当然也可以限制仅放开中文符号
    return true
    }
    dqifree
        28
    dqifree  
       Aug 13, 2022
    不知道还有没有人看。亲测。go1.16 不行,换用 go1.13 就支持
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5816 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 95ms · UTC 07:32 · PVG 15:32 · LAX 00:32 · JFK 03:32
    ♥ Do have faith in what you're doing.