写点什么

Go 语言是不是当今最好的语言

作者:丛风
  • 2025-09-09
    江苏
  • 本文字数:1352 字

    阅读完需:约 4 分钟

市面上已有很多,从性能和并发能力等方面,对比各大语言的优劣。而此处准备另辟蹊径,从编程人员的实际使用感受,来谈谈这个话题。很显然,这是个有很强个人喜好的讨论。大家有兴趣的话,也可以留言,说说自己的观点。

概述

本人有十多年的 web 开发经验,也在实际项目中,长期使用过 PHP、Python、Java、Go 等语言。Node.js 使用并不多,而 Rust 还未有尝试。总体下来,目前最喜欢的还是 Go 语言了。下面具体说下原因。

简洁的语法

如它的设计理念所言,Go 语言写起来简洁明了。没有小括号,结尾也没有分号。作为强语言,也提供了简洁的短变量声明方式。所有的写法,都让人感觉简单而又舒服,而且没有很强的被禁锢的感觉。这里,我们举例来对比一下,有如下入口程序:

package mainimport "fmt"func main() {    for i := 0; i < 10; i++ {        fmt.Println(i)    }}
复制代码

以上代码中,实现了依次打印数字的功能。整个代码简单明了。而相同的逻辑,我们来看看 Java 的版本:

public class Main {    public static void main(String[] args) {        for (int i = 0; i < 10; i++) {            System.out.println(i);        }    }}
复制代码

很显然,又重又比较费事。这里,我们也提供下 Python 和 PHP 的版本:

# python版本for i in range(10):    print(i)
复制代码


<?php// PHP版本for ($i = 0; $i < 10; $i++) {    echo $i;}
复制代码

大致来看,也还算简单明了。但 PHP 的版本还是略显繁琐,具有最大特色的`$`符号,也不置可否。

灵活的框架

我喜欢 Go 语言的另一个重要原因,就是因为 Gin 框架。它能带给程序员很大的自由度。包括并不仅限于,读取配置的方式和 ORM 库等。而早年使用过的 PHP 框架,如 ThinkPHP、Laravel、Yii 等,只能在它们整套的框架逻辑下编码。对有一定技术追求的人来说,并没有特别自由的操作空间。对于 Java 的 Spring 框架,它有自己一整套的解决方案,写代码有时候搞得像写论文,严谨而又乏味。对我来说,编程不该是一项非常有趣的事情吗?而且,一门语言,因为 Spring 框架的产生,Web 开发才变得友好,本身也是比较别扭的事情。对于 Python 语言,其实语言本身我一直也挺喜欢。但它的 web 框架,如 Django、Flask、FastAPI 等,一直并没有让我有特别好的体验感。很多项目,后期总会有一堆糟糕的 ORM 操作。这些事情,也一直让我匪夷所思。

实用技巧

Go 语言最实用的技巧,当然是使用`go`关键词,来开启新的虚拟线程了。没有语言能像它这样便捷。举例如下:

go func(){  fmt.Println("新的虚拟线程")}()
复制代码

当然,Python 也有很酷炫的的语法糖。比如以下代码,循环、判断、生成新列表,一气呵成:

[x + 1 for x in result if x > 1]
复制代码

而 Java 的函数式编程,我也挺喜欢。但代码量还是有些冗长:

result.stream()  .filter(item -> StringUtils.isNotBlank(item))  .map(item -> "字符串:" + item)  .collect(Collectors.toSet());
复制代码

美中不足

当然,Go 语言也有一些美中不足的地方。比如万恶的错误处理方式。官方也尝试讨论了多种优化方案,但一直没有让所有人都满意。大家应该还在大批量写如下代码吧:

result, err := fetchList()if err != nil {  return err}
复制代码

但愿,以后的版本,Go 语言可以找到很好的解决方案。比如,可以像如下方式写代码。(开个玩笑)

result, throw := fetchList()
复制代码


发布于: 刚刚阅读数: 4
用户头像

丛风

关注

还未添加个人签名 2019-11-13 加入

还未添加个人简介

评论

发布
暂无评论
Go语言是不是当今最好的语言_Go_丛风_InfoQ写作社区