感觉 go 语法好诡异

2018-01-23 11:38:44 +08:00
 boywhp

昨天学习了下 go 语言,一开始画风还挺正常的,直到我看到数组和 MAP,感觉语法好绕人

具体见 https://tour.golang.org/moretypes/22

感觉 go 语言比 Python 绕脑子多了啊

个人用过 C 和 PYTHON

7885 次点击
所在节点    Go 编程语言
81 条回复
winglight2016
2018-01-23 20:59:50 +08:00
@kevindu item[::-1],这里两个冒号没看懂。。。为什么 str 直接就变成倒序了?
searene
2018-01-23 21:12:36 +08:00
Python 一点也不绕
C 就是坑多一些,容易犯错,也没有什么特别的地方

要是比绕,还是得跟 Scala 比
winglight2016
2018-01-23 21:29:21 +08:00
@PureWhite 你要真觉得语言之争没意义,就不需要用搬运工来比喻应用开发,用大牛来比喻系统底层开发——大家都是程序员,搞鄙视链毫无意义
SuperMild
2018-01-23 22:16:14 +08:00
@koebehshian 如果采用你的方案,当看到 a <- b 时,有三种可能性!即:1.传消息进 a,2.从 b 传消息出来并赋值给 a,3.从 b 直接传消息进 a

而原方案只有一种可能,明显更简洁、清晰、系统复杂度低、人脑负担轻。
PureWhite
2018-01-24 00:11:38 +08:00
@winglight2016 我的本意不是鄙视业务开发,应用开发未必就不是造轮子,毕竟各自的业务还是不同的,业务总不能也调 API 吧。。。。另外,我说的大牛,也未必是真正的大牛。我说这些的原因是因为楼主一直在强调,C 也有库可以用,java 和 python 库比 go 多 blabla。
可能是我表达失误,在此道歉。

另外,在 Python 里面,list 列表(就是你说的那玩意 item[::-1])的 中括号里面分为三个部分,分别是 [起始 index : 结束 index+1 : 步长],如果不写 起始 index 就默认是从第一个元素,如果不写 结束 index+1 就默认是到最后一个元素,那么如果说步长是 -1 就变成了倒序了,因为成了从最后一个元素到第一个元素。
zonghua
2018-01-24 00:41:16 +08:00
@mooncakejs 哈哈你这不就是 C# 吗
Clarencep
2018-01-24 08:53:32 +08:00
还好吧,只是觉得 interface{} 写起来会很蛋疼,所以偶一般会定义个 any 类型:

type any interface{}
KgM4gLtF0shViDH3
2018-01-24 09:12:43 +08:00
@tulongtou #4 swift 好像也这样吧
anasplrt34
2018-01-24 09:50:00 +08:00
@Clarencep 塞进来爽 取出来就傻逼了 要搞一大堆的类型断言
sumu
2018-01-24 10:08:39 +08:00
Go 的作者虽然都老牛逼了,但一看语法规范,我就知道这帮家伙,肯定都是强迫症重度患者加控制狂,尼玛的
ps:scala 语法我觉得蛮好的,写多了 scala 代码,真的不愿意写 c++代码,就是代码的可读性差,不停的点下去,几个月不看代码,自己也懵逼
Tyanboot
2018-01-24 10:40:06 +08:00
@winglight2016 切片有第三个参数, 为步长, -1 的时候就是逆序 1 的步长. 也就是整个逆序了.
Kilerd
2018-01-24 10:40:25 +08:00
我觉得最难以接受的几点在于:
1. 类和函数都是大写字母开头,这样就挺难分清楚的了
2. 那个叫啥来着,用反引号 ` 做 json validation format。 这个感觉挺反人类的。
Tyanboot
2018-01-24 10:40:42 +08:00
@legendlzy 就是因为用 c/c++才会觉得 golang 很绕
jseanj
2018-01-24 10:52:40 +08:00
我倒是觉得 go 的错误处理是个坑,if err != nil 真是满满登登啊
XIVN1987
2018-01-24 10:56:53 +08:00
@Clarencep

好操作,一下美观了不少!!
Hellert
2018-01-24 10:56:57 +08:00
习惯问题
XIVN1987
2018-01-24 10:57:51 +08:00
@Clarencep
建议 Go 开发组直接将此加入标准库
XIVN1987
2018-01-24 10:59:10 +08:00
@Kilerd

深表赞同,,要是能把大小写区分 public 改成是否首字母下划线区分 public 就好了
winglight2016
2018-01-24 11:31:47 +08:00
@PureWhite
@Tyanboot
明白了,原来这就是切片啊,我一直以为切片只有两个参数
PhilC
2018-01-24 14:29:15 +08:00
@Clarencep
type Any = interface{}

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

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

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

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

© 2021 V2EX