百科问答小站 logo
百科问答小站 font logo



Go 这种逆天的语言,为什么 5 年了,还没有火起来呢? 第1页

  

user avatar   kennethtse 网友的相关建议: 
      

你也知道才5年啊,那c#岂不是要哭晕在厕所。

------------------------------愤怒的分割线---------------------------------------

实在受不了另外一个高票答案里面对Go的低级黑了……贴两个菜鸟的聊天记录,喷Go的error、泛型、channel阻塞……也好意思贴出来,能涨点见识再来黑吗?

给大家扫扫盲,go里面的channel阻塞非阻塞应该怎么用。

以下代码会deadlock

为什么?因为push和pull永远不可能同时发生,这就是阻塞channel的不当用法。

怎么解决呢?可以这样:

通过在另一个协程中run push代码,使得channel的生产和消费可以同时对接,正常的阻塞使用方式。

还可以这样:

给channel加一个buffer,只要buffer没用尽,大家就不用阻塞。

“以为加buffer就不会阻塞了吗?”“没有数据pull的时候就会阻塞啊”——哎呀你还真是一知半解,也好意思出来误人子弟。

这是非阻塞的pull channel

这是带超时的pull channel

Go这么简单的语言都学了一知半解就开喷,你觉得你转rust就有救了?

顺便发表见解,做学术的对泛型看得比较重,做工程的其实到没那么纠结。真实世界中接口远比泛型来得有用。




  

相关话题

  C# 虽然在语言层面上更胜 Java 一筹,但是这对于占有率真的很重要吗? 
  编程零基础应当如何开始学习 Python? 
  微软当年的 J++ 究竟是什么?为什么 Sun 要告它? 
  将编程语言中的英文替换成中文并将其完善为一门国人普遍接受的编程语言,需要哪些条件? 
  JavaScript 是什么? 
  有没有可能运用人工神经网络将一种编程语言的代码翻译成任意的另一种编程语言,而不经过人工设计的编译过程? 
  C++20 即将到来的 coroutine 能否与 Golang 的 goroutine 媲美? 
  C#中字符串可以使用可变大小的内存,为什么数字不能? 
  为什么程序员要使用三元运算符而不是显式写出 if 语句? 
  C# 引用类型相比于值类型意义何在? 

前一个讨论
地铁打电话时说「你那几千万、几个亿什么时候到账」的都是什么职业?
下一个讨论
这样一段代码在软件工程界属于什么水平?





© 2025-04-18 - tinynew.org. All Rights Reserved.
© 2025-04-18 - tinynew.org. 保留所有权利