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

2021-01-31 17:16:33 +08:00
 DCCooper

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

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

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

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

4625 次点击
所在节点    Go 编程语言
28 条回复
labulaka521
2021-02-01 08:28:19 +08:00
@tairan2006 下划线可以用吧 测试文件就有下划线
wszgrcy
2021-02-01 08:42:26 +08:00
我觉得不是楼主的问题,其他人在避重就轻,严格的说这个 bug 出现了,那么就应该解决,而不是找一些理由去回避,虽然这些理由看起来好像合理,但是这毕竟是个问题,那么就应该解决,不要把饭圈的那一套搞过来
Leigg
2021-02-01 09:03:08 +08:00
这是 mac 上的 bug,提 bug
yebo777
2021-02-01 09:58:26 +08:00
只看下面的回复还以为是楼主的问题。。。
Daming
2021-02-01 11:21:06 +08:00
我就喜欢枚举用中文,直观
qiaocc
2021-07-26 17:49:42 +08:00
+1, 我也遇到了. 官方还在讨论: https://github.com/golang/go/issues/45549
yangyile
2022-03-12 22:42:23 +08:00
通过修改 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
2022-08-13 16:06:23 +08:00
不知道还有没有人看。亲测。go1.16 不行,换用 go1.13 就支持

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

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

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

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

© 2021 V2EX