Swift、Golang、C# 都写项目,只能说一下个人体验,不做长篇大论的分析了。
首先说C#吧,虽然和C++一样贯彻一个“C”的名头,但是C#和C++在开发上有着巨大的差异,它是一种可以保证内存安全的语言,而且各项指标其实都在对标Java。个人认为C#就是一种Java的改进,似乎主要是为了吸引Java用户转移到.net平台而设计。
语言上,委托(Delegate)语法的使用让C#跟上了现代编程的潮流,使得闭包、函数式编程的特性比起Java简单了许多,时至今日Java依赖接口实现的匿名函数和闭包特性依然显得要更繁琐一些。另外C#提供了unsafe语法,相当于把C++的一些灵活特性借来用了,某些时候可能有奇效,也增强了C#和其他语言、环境做双向整合的能力,C#相比Java也是早早的实现了部分的类型推导功能。
总体来说C#的语法适合与Java进行类比,描述能力也差不多,确保内存安全,兼容原生数据类型,基于数据、方法封装还有继承、多态的OO编程。
Swift 出现的时间比 C# 要晚很多了,见证了各种新兴语言围剿Java大哥的时代,语言设计理念也不再是给Java打补丁的模式,看上去和Rust有很多渊源,体现了很多先进的设计。
不看语法差异,只说class、protocol这些设计其实和C#差不多,C#能写出来的代码技巧现在的Swift基本上都能写,而且没有历史包袱,实现相同的代码也要比C#简洁得多。
而更大的变化在于swift大幅强化了类型推导和闭包技术,使得这些现代编程中必不可少的要素真正在语言上成为了一等公民,函数式编程具有良好且完善的工程实用性,不再是C#上那种小甜点技术。个人认为这足以让开发效率发生“革命性的提升”,更多的问题可以在思想实验上就解决,而不再是冗长的代码,也更接近纯数学的简洁之美。
不过Swift上手的门槛还是明显高于C#,也高于很多常见的语言,Swift作为内存安全的语言,精密的类型推导对开发者的习惯有着很高的要求,需要大量的训练,并且要能清醒辅助大量的“?”、“!“这样的前后缀符号,需要严格的关注自己代码中闭包的逃逸和非逃逸状态…各方面使用的感受来说,用好Swift是一个让人挺秃头的事情。

最后说Golang
和前面说的 C# 和 Swift 不同,Golang 更像是对 C 的强化和改进,设计目标很明确——后端、中间件、吃高并发。不强调需要多么强大的语言特性或者描述能力,确保内存安全、类型安全,极简且实用至上,编译速度飞快。
Golang 的核心概念,鸭子类型、接口、Goroute 和 channel 都很容易理解,它几乎彻底摈弃了经典的OO抽象,选择了有限度的、更多的支持那些现代编程中最重要的概念:高度实用的类型推导,简洁且完整的闭包支持,便利的并发编程。尤其是把本来大多数语言中作为库特征的线程、队列技术直接纳入了语言特性,这是一种高度工程化的思考方式。
总体来说Golang不是那种追求万能的语言,多范式、大平台的场景下表现都比较弱。但是几天内谁都能上手写代码,人人都能高并发,这是 Golang 真的能做到的。

至于他们的前景………………
C# 个人觉得是差不多了,除非是高度依赖M$相关生态,新产品建议不要上,相比Java开发上并没什么过人之处,生态远远落后,也许今后会更多的被Unity之类的项目推动,但是依赖性不高
Swift 就看它爸爸的未来了,“上手简单”和“生态良好”两个重点它都没沾上,所以人才极其稀缺,要是没有 iOS 平台,说实话个人觉得没有什么竞争力,可能也就是和Scala一样,作为小众语言,在某些犄角旮旯发挥特别的作用
Golang 国内发展很火,因为语言简单,所以人才很容易培养,生态也逐渐成型。有点开发经验的人几个小时就能上手,如果职业作为后端工程师,怎么说都该学学。