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

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

  •  
  •   DCCooper · 2021-01-31 17:16:33 +08:00 via iPhone · 4577 次点击
    这是一个创建于 1152 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    感谢真心参与讨论的老哥们~
    问题解决了,又可以舒舒服服的刷题了,提前祝大家新年快乐,早日升级加薪!
    28 条回复    2022-08-13 16:06:23 +08:00
    boris93
        1
    boris93  
       2021-01-31 17:17:42 +08:00 via Android
    用英文
    路径绝对不建议带中文
    DCCooper
        2
    DCCooper  
    OP
       2021-01-31 17:19:23 +08:00 via iPhone
    @boris93 英文还真没汉字认得快😂
    jeremaihloo
        3
    jeremaihloo  
       2021-01-31 17:35:04 +08:00 via Android
    其实你可以这个脚本方便查找的,代码注释里面写中文名字。查找的时候就可以用中文了,没必要路径用中文
    fiypig
        4
    fiypig  
       2021-01-31 17:36:33 +08:00 via iPhone
    命名用中文这习惯不好
    DCCooper
        5
    DCCooper  
    OP
       2021-01-31 17:39:49 +08:00 via iPhone
    @fiypig 只在这个自己的题库里用到了中文😅
    DCCooper
        6
    DCCooper  
    OP
       2021-01-31 17:40:42 +08:00 via iPhone
    @jeremaihloo 之所以这样做就是想类似于那种小卡片,看一眼就能想起来这道题是啥
    IceBay
        7
    IceBay  
       2021-01-31 18:33:08 +08:00
    那试试额外管理一份软链接?
    MaxLi77
        8
    MaxLi77  
       2021-01-31 20:36:29 +08:00
    退一步,用拼音也行啊
    dollck
        9
    dollck  
       2021-01-31 20:39:21 +08:00 via Android
    英语有点堪忧阿,楼主 qwq
    52coder
        10
    52coder  
       2021-01-31 20:44:21 +08:00
    在公司刷 leetcode 有点胆肥呀,养成良好习惯,用英文,leetcode 上题目标题不是英文吗?
    WebKit
        11
    WebKit  
       2021-01-31 20:52:28 +08:00 via Android
    我用 IDEA 带中文名字是可以的。
    no1xsyzy
        12
    no1xsyzy  
       2021-01-31 21:02:17 +08:00
    去 golang/go 提 issue 啊(
    MrKrabs
        13
    MrKrabs  
       2021-01-31 21:24:37 +08:00
    居然没人说股沟坏话
    tairan2006
        14
    tairan2006  
       2021-01-31 22:56:38 +08:00
    go 官方的包名规范是全小写字母啊。。下划线啥的都不要用
    zeroDev
        15
    zeroDev  
       2021-01-31 23:01:03 +08:00 via Android
    也许可能是编码问题?
    DCCooper
        16
    DCCooper  
    OP
       2021-01-31 23:04:07 +08:00   ❤️ 1
    @zeroDev 编码问题应该不存在,同一套代码,我旧的英特尔芯片 MacBookPro 没问题,M1 芯片的跑不了。
    jinliming2
        17
    jinliming2  
       2021-02-01 01:13:59 +08:00   ❤️ 1
    看起来与这个 Issue 相关: https://github.com/golang/go/issues/29101
    你可以试一试 go 1.16 rc 版。
    djoiwhud
        18
    djoiwhud  
       2021-02-01 07:59:57 +08:00 via Android
    英语烂的不建议做 it 行业。
    DCCooper
        19
    DCCooper  
    OP
       2021-02-01 08:02:12 +08:00 via iPhone   ❤️ 1
    @djoiwhud 老哥是早上刚起来没洗漱呢吧,啥时候说自己英语烂了...
    DCCooper
        20
    DCCooper  
    OP
       2021-02-01 08:07:22 +08:00 via iPhone
    @jinliming2 十分感谢!
    labulaka521
        21
    labulaka521  
       2021-02-01 08:28:19 +08:00 via iPhone
    @tairan2006 下划线可以用吧 测试文件就有下划线
    wszgrcy
        22
    wszgrcy  
       2021-02-01 08:42:26 +08:00 via Android   ❤️ 10
    我觉得不是楼主的问题,其他人在避重就轻,严格的说这个 bug 出现了,那么就应该解决,而不是找一些理由去回避,虽然这些理由看起来好像合理,但是这毕竟是个问题,那么就应该解决,不要把饭圈的那一套搞过来
    Leigg
        23
    Leigg  
       2021-02-01 09:03:08 +08:00 via iPhone
    这是 mac 上的 bug,提 bug
    yebo777
        24
    yebo777  
       2021-02-01 09:58:26 +08:00
    只看下面的回复还以为是楼主的问题。。。
    Daming
        25
    Daming  
       2021-02-01 11:21:06 +08:00 via Android
    我就喜欢枚举用中文,直观
    qiaocc
        26
    qiaocc  
       2021-07-26 17:49:42 +08:00
    +1, 我也遇到了. 官方还在讨论: https://github.com/golang/go/issues/45549
    yangyile
        27
    yangyile  
       2022-03-12 22:42:23 +08:00   ❤️ 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  
       2022-08-13 16:06:23 +08:00
    不知道还有没有人看。亲测。go1.16 不行,换用 go1.13 就支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5431 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 08:45 · PVG 16:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.