感觉 go 语法好诡异

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

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

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

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

个人用过 C 和 PYTHON

7923 次点击
所在节点    Go 编程语言
81 条回复
legendlzy
2018-01-23 11:46:41 +08:00
用过 c 的人。。。会觉得 golang 绕吗。。。
boywhp
2018-01-23 11:50:49 +08:00
@legendlzy 关键我还用过 Python
Luckyray
2018-01-23 11:53:36 +08:00
声明的时候类型放后面就挺诡异的...
tulongtou
2018-01-23 11:55:27 +08:00
@Luckyray 习惯就好,Scala 也这样
aksoft
2018-01-23 11:55:53 +08:00
map[int]map[int]*Node
还行。。。
timothyye
2018-01-23 11:56:35 +08:00
@Luckyray swift 也这样
JamesRuan
2018-01-23 11:56:51 +08:00
心里默念:make m a Map of int to string。写出来是`m := make(map[int]string)`,不知道有啥绕的
janxin
2018-01-23 11:59:45 +08:00
你就当 C 处理嘛~
kevindu
2018-01-23 12:00:51 +08:00
其实写多了,就觉得还是 Python 爽。

```python
" ".join([item[::-1] for item in s.split(' ')])
```

像这种一句话写完的 Python 代码,用 go。。。
SuperMild
2018-01-23 12:02:32 +08:00
静态类型比动态类型绕,这不是很正常吗,与 Python 比明显不合适。另外,go 也不是典型的面向对象语言,如果硬要把面向对象那套思维往 go 上套,也会感觉怪异。
PythonAnswer
2018-01-23 12:02:52 +08:00
上面 python 是倒着来的。人家面向对象的看着就鄙视俺们。
wekw
2018-01-23 12:03:05 +08:00
@timothyye Swift 才不是这样,差别大了。

golang 就是这个样子,带网络库的 C,写起来比较蛋疼。
htfy96
2018-01-23 12:03:22 +08:00
其实我不是很懂:一门设计成 better C 的语言为什么经常被和 Python 和 JavaScript 比较,而且还经常有人推荐前端去学 Go😷
enenaaa
2018-01-23 12:07:54 +08:00
这两天也在看 go。
我觉得定义 struct 时,前面的 type 真心多余啊。还有成员方法的定义方式, 也是蛋疼。
SuperMild
2018-01-23 12:12:39 +08:00
Golang 的优点是语言特性少,可以在很短时间内学完全部语言特性,看别人写的代码非常清晰易懂,运行效率高,编译速度极快,协程非常易用好用。

这些才是 golang 最优先考虑的东西,为了优先实现这些特点,golang 现在的语法已经设计得非常好了。

map 和 slice 之所以是现在这个样子,正是因为受到上述特点的限制。你无法一方面要求得到 golang 的全部主要优点,又同时得到 python 的优点,如果你能做到,你就超越的当今世上最顶尖的那一批语言专家了。
eslizn
2018-01-23 12:17:43 +08:00
黑 go 的姿势不对,要黑得黑泛型
boywhp
2018-01-23 12:25:46 +08:00
@SuperMild 我觉得你说的优势完全可以用 C 加一个好用的库搞定了!说实在的,我怎么觉得 C 语言语法都比 go 好理解
XIVN1987
2018-01-23 12:28:18 +08:00
我是觉得 go 语法丑,,比如定义 method 的时候,,接收器、参数、返回值三个括号,挺丑
SuperMild
2018-01-23 12:35:35 +08:00
@boywhp 你是说的原生 C 的易学易用、编译速度、协程的易用好用程度比 go 好?????(此处省略一万个问好)
至于用 C 写些库或者啥的能不能最终实现类似 golang 的各种特性,当然可以啊,但结果只是重新发明 golang 而已。
JerryCha
2018-01-23 12:40:17 +08:00
我觉得 C 要好理解,Go 的类型后置跟英语里用从句跟在后面补充描述一样
C: This is an unsigned variable.
Go: This is a variable which is unsigned.

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

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

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

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

© 2021 V2EX