[翻译]Go与C#对比 第三篇:编译运行时类型系统模块和其它的一切

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[翻译]Go与C#对比 第三篇:编译运行时类型系统模块和其它的一切相关的知识,希望对你有一定的参考价值。

Go vs C#, Part 3: Compiler, Runtime, Type System, Modules, and Everything Else | by Alex Yakunin | ServiceTitan — Titan Tech | Medium


目录

  • 译者注

  • 相似性

  • 编译

  • 垃圾回收

  • 模块

  • 类、结构、接口

  • 错误处理

  • 相等性(==, !=)

  • 基础类库

  • 两种语言中存在的其他类似特征

  • 类似的反模式/设计错误

  • C#中缺少的Go功能

  • Go中缺少的C#功能

  • 异步执行 第一部分回顾

  • Sequences, Rx, IAsyncEnumerable

  • 运行时性能

  • 后记


译者注

本文90%通过机器翻译,另外10%译者按照自己的理解进行翻译,和原文相比有所删减,可能与原文并不是一一对应,但是意思基本一致。

译者水平有限,如果错漏欢迎批评指正

本文发表于2020年1月,当时使用的.NET Core版本应该是3.1,Go版本应该是1.13版本。而现在.NET版本已经到6 Pre5,Go也到了1.16,经过这么多版本的迭代,Go和.NET的性能都有很大提高,所以数据仅供参考,当然也欢迎大家能在新的版本上跑一下最新的结果发一篇帖子出来。

译者@Bing Translator、@InCerry,另外感谢@晓青、@贾佬、@晓晨、@黑洞、@maaserwen、@帅张、@3wlinecode、@huchenhao百忙之中抽出时间帮忙review和检查错误。

原文链接:https://medium.com/servicetitan-engineering/go-vs-c-part-3-compiler-runtime-type-system-modules-and-everything-else-faa423dddb34


这一个系列中还有其他两篇文章:

  • 第一篇:Goroutines vs Async-Await 【中文翻译版】

  • 第二篇:Garbage Collection. 【垃圾回收-中文翻译版】

想知道谁在这里吗?请一直读到最后。


这是本系列中最后一篇,希望是最有趣的一篇。第一篇和第二篇主要研究了Golang的协程和几乎无暂停的GC,这篇文章补充了所有缺失的部分。

相似性

两种语言的相似性:

  • 可以编译成本机代码

  • 可以在多个平台上运行

  • 依赖于垃圾收集

  • 支持模块【.NET中是程序集(assemblies)】

  • 支持类【在Go中叫结构(structs)】,接口【interfaces】和函数指针【function pointers .NET中叫委托(delegates)】

  • 提供一套错误处理的选项

  • 支持异步执行

  • 拥有丰富的基础类库

  • 具有类似的运行时性能

但是在这些功能的实现上,差异多于相同之处。让我们跳到这一部分

以上是关于[翻译]Go与C#对比 第三篇:编译运行时类型系统模块和其它的一切的主要内容,如果未能解决你的问题,请参考以下文章

[翻译]Go与C#对比 第三篇:编译运行时类型系统模块和其它的一切

JDK11 | 第三篇 : 局部变量类型推断

Go语言优势与劣势

Go 与 PHP 的语法对比

英汉翻译 第三篇

2021-05-12 GO 与C#代码行对比