golang 语言学习有感

2020-01-15 11:24:07 +08:00
 woahishui
刚开始学习 golang,越看越有 basic 语言的味道,但是有没有 basic 丰富,难道是简化的 basic 语言
7929 次点击
所在节点    程序员
58 条回复
fanpei0121
2020-01-15 13:48:45 +08:00
lihongjie0209
2020-01-15 13:51:52 +08:00
@Hanggi #19 你说的这些东西只要是现代语言都满足:

Python:

自带电池 -> 强大的标准库
基于解释器的 -> 不依赖操作系统
优秀的性能 -> 要性能的就是 C 来写

JavaScript

npm -> 强大的标准库
我有 V8 -> 对操作系统极少的依赖
我有 V8 -> 优秀的性能

Java
我只管创建接口, 实现大厂来做 -> 强大的标准库
我有 JVM -> 对操作系统极少的依赖
我有 JVM -> 优秀的性能

以上所有:
强制的代码风格 -> editor config / ide 配置文件
fanpei0121
2020-01-15 13:52:32 +08:00
@wutiantong 个人以为,golang 同时兼顾了开发效率与运行效率。其他语言都比较极端。
bbao
2020-01-15 13:55:30 +08:00
@Hanggi

强大的标准库?兄弟你再搞笑?
Hanggi
2020-01-15 14:05:37 +08:00
@lihongjie0209
你自己都承认了,
java 要低系统依赖是不是要 jvm, 跑个服务器是不是还要用 tomcat、maven 之类的?
跑 v8 你不需要装 node 吗?
python 是不是还要借助 cpython ?
ide 上的各种配置是不是每家公司都有些许的差异呢?

而 GO 语言在语言层面就实现了这些。我并没有说 go 语言在所有这些方面都做到最好了,但确实给开发者带来了不一样的体验。并且出现了不少杀手级项目,其他语言也能开发出这些项目,那为什么要用 GO 语言呢?
lihongjie0209
2020-01-15 14:11:10 +08:00
@Hanggi #25 我懂了, 你说的系统依赖是不需要虚拟机, 直接编译产生机器码的那种.
fiypig
2020-01-15 14:16:23 +08:00
我只知道我可能我会在 go 终老了
VoidChen
2020-01-15 14:24:24 +08:00
我以为真的写过代码或者用过 2 种或以上语言的人应该都不会说出这样的话。。。
wutiantong
2020-01-15 14:51:48 +08:00
@fanpei0121 为啥你回复里 at 我但我没收到 unread 提醒呢?
guolaopi
2020-01-15 14:59:43 +08:00
@lihongjie0209 孤陋寡闻了我,还没看过 go,难道 go 是直接拿记事本撸完就能跑了吗?(滑稽
yukiloh
2020-01-15 15:08:46 +08:00
一开始觉得 defer recover 牛逼,实际写起来要依靠 ide 比如 jb 的 template,iferr 也是,如果没有快捷输入真的烦…
还有神一样的墙,感谢七云牛
还有包管理…现在有 module 好多了
smallyu
2020-01-15 15:23:41 +08:00
basic 的多线程是什么写的?
zunceng
2020-01-15 15:36:11 +08:00
关于错误处理

https://developer.aliyun.com/article/740696


习惯用 try catry 的, 回头好好读一下自己代码 写了多少 bug ( PS: 可能也不容易看出来)
lihongjie0209
2020-01-15 15:43:15 +08:00
@zunceng #33 嗯, 找个机会把 JDK 源码中关于 try cache 的 BUG 找出来, 提个 issue
hujianxin
2020-01-15 15:55:08 +08:00
@cmdOptionKana 很快支持泛型,有多快呀
xpresslink
2020-01-15 15:57:48 +08:00
强制的代码风格(仁者见仁)
强大的标准库
对操作系统极少的依赖
优秀的性能
这些都不是语言的本质。
@Hanggi 够浪的设计目标就是个有垃圾回收的 C 语言,减小开发难度和负担,所以比较适合 Go 的使用场景比 C 语言还要少。业务逻辑复杂度低又需要一定的性能服务后端开发,例如微服务。
ChristopherWu
2020-01-15 16:20:03 +08:00
来让我喷一下 go:

1. 没有高性能好用的泛型,你说 interface{}?那个连 go 作者都受不了,因此导致没有抽象库可用如 reduce, map, flitter, any 等等函数;
2. 错误处理,就算是用`product type`,也没有设置好用的语法糖将 error 迭代下去,导致大量重复冗余的 if else
3. 自作主张的 golint, 你要是希望自己比较严谨,希望社区统一,就不要定死那么多可有可无的东西,大括号换行这些没所谓。cpu CPU Cpu 大小写没所谓,但,if else 我就喜欢用 else 显示标注,你连这要管我?? 我 export 函数就是不喜欢写注释你给我报错???还不能自定义??
4. 一开始没有想做好 包管理器 给开源社区的人用。。导致现在一大堆。。
想到再补充。。
laravel
2020-01-15 16:28:12 +08:00
我只想用 go 语言实现 raft 协议,但是现在还没有任何行动
alphatoad
2020-01-15 16:34:14 +08:00
讲道理 讲道理
动态语言生成二进制或者打包一个运行时也是分分钟的事
高级语言哪有真不依赖运行时的,libc、posix 之类的算🐴?
lihongjie0209
2020-01-15 16:37:41 +08:00
@alphatoad #39 系统调用还是要依赖的

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

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

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

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

© 2021 V2EX