你也知道才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就有救了?
顺便发表见解,做学术的对泛型看得比较重,做工程的其实到没那么纠结。真实世界中接口远比泛型来得有用。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有