为什么 go 的包名要全小写,像 k8s 源码的包名很多都没有分隔符

2022-01-06 11:16:26 +08:00
 0xljh

逼死强迫症。。。

5720 次点击
所在节点    Kubernetes
30 条回复
gengchun
2022-01-06 11:34:25 +08:00
这个应该是传承的 Java 吧?如果要分隔,只能用 "/" ,最后搞成很多层很多层这种。

k8s 应该是不想搞很多层,所以就变成这样了 credentialprovider 。

往好的方面想,早期文字其实是没有分词符的,都是连写。
dallaslu
2022-01-06 11:36:55 +08:00
虽然包名要全小写,但是直转 JSON 是首字母大写哦,你说 go 是不是很优秀
vus520
2022-01-06 11:51:58 +08:00
虽然包名要全小写,但方法名要大写哦
lysS
2022-01-06 12:14:18 +08:00
包名的大小写没有意义啊,难道小写开头的包不能被其他包调用?那我写来干嘛?
go 官方的包都是小写的,因此就成为了约定俗称的一种规则了
masterclock
2022-01-06 12:57:08 +08:00
1. go 官方包就那么多,取名字好取,业务用的包,取名实在太难了,全小写不能有分割。
2. 一个文件夹只能有一个包,而且跟文件夹名没关系
3. 一个文件夹只能有一个包其实不对,还可以有个 test
4. 叫 internal 的包不能被导入,我 TMD 正好写了个东西,包含 external 和 internal 包
5. go 处理 JSON 用的时注释啊哈哈哈哈哈哈哈哈哈,
Fitz
2022-01-06 13:14:34 +08:00
又没有强制, 只是一种风格, 你用大写或者下划线都可以啊
comoyi
2022-01-06 13:27:03 +08:00
确实,总会遇到多单词.go 文件又不适合分成两层文件夹的
thtznet
2022-01-06 14:49:40 +08:00
不惯用驼峰的语言都是耍流氓,包括 js 。
k9982874
2022-01-06 14:54:53 +08:00
@thtznet #8 linus torvalds: 黑人问号
lolizeppelin
2022-01-06 15:01:17 +08:00
只要最后会落实到文件名的 “变量 /名称” 都会统一使用小写
就是为了避免被 windows 坑到

有什么好黑的
ThanksSirAlex
2022-01-06 15:07:12 +08:00
不过是约定俗成的风格而已,不同的语言有不同的风格和约定,仅此而已
franklinyu
2022-01-06 15:54:34 +08:00
@lolizeppelin 小写没问题,snake_case 不好吗?为啥要直接拼起来,分词都要分半天(有的甚至有歧义)
lolizeppelin
2022-01-06 15:56:26 +08:00
@franklinyu
因为使用驼峰命名法,包名直接 lowercace 了

这个解释觉得怎么样

哈哈哈哈 我编不下去了
qW7bo2FbzbC0
2022-01-06 16:50:14 +08:00
大道至简,就像没有泛型一样,go 这么做肯定有大牛的多年经验。rob, ken 还没你懂?
qW7bo2FbzbC0
2022-01-06 16:52:07 +08:00
可能每个人喜好不同吧,可能路径太长
ipeony
2022-01-06 16:54:44 +08:00
@hjahgdthab750 #14 go 1.18 的范型它来了 😅
Kasumi20
2022-01-06 17:03:07 +08:00
为什么函数名首字母要大写?
charmToby
2022-01-06 17:20:44 +08:00
@Kasumi20 大写可以导出给其他地方用,小写只能同一个包内使用。
zqli92
2022-01-06 17:26:43 +08:00
@Kasumi20 golang 的缺陷:Public
fdppzrl
2022-01-06 17:39:14 +08:00
因为 mm 和 MM 是两个人。对于*unix 系统来说,能区分。在 win 上不是那么回事,它认为是一个人。包名通常对应的是系统里面的目录,在不同系统上编写的代码,统一包名就可以避免 file not found 、object not found 这类问题呀。至于方法名是文件内的内容,编译后就没系统什么事了吧。Java 狗的理解🐶

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

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

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

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

© 2021 V2EX