Golang 是一种相当好的语言吗?

Go 是我一直很想学习但从未掌握的语言之一。我第一次对这门语言感兴趣是在 2016-2018 年我从事第一份工作的时候。当时这门语言完全是一头野兽:没有模块,没

这篇文章给大家聊聊关于Golang 是一种相当好的语言吗?,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

我喜欢Go 的原因对于某些程序员来说可能是显而易见的,但无论如何还是值得讨论的。自从我第一次听说该语言以来,我就很欣赏该语言默认生成静态二进制文件并且编译时间很快,现在我经常使用该语言,我更加欣赏这一点。在更改一行代码并运行go run 后几乎立即获得反馈对于开发人员体验非常有益。以前遇到一些自动化相关的问题时,我第一个想到的就是用Python来实现自动化。现在我基本用Go。

然后Go 的启动时间很快。我对延迟有点敏感,特别是对于命令行实用程序,当我期望它们快速响应时,这是我在Python 中可能遇到的问题的一部分,尤其是对于更复杂的程序,但在Go 中,这种情况很少成为一个问题。

模块也很棒。它并非没有怪癖(就像Go 生态系统中的所有内容一样),但仅使用CLI 就可以轻松地在项目中添加和管理依赖项,这一事实对于Go 来说是很棒的。

自从我开始谈论go CLI 以来,它一直是一个很棒的工具!事实上,您可以管理依赖项、生成文档、格式化代码、lint、运行测试/基准测试/模糊器、检查代码的竞争条件等,所有这些都只需使用该语言的“编译器”即可,但是,这真的很棒。这仍然可能是我所知道的任何编程语言中最好的开发人员体验之一(也许只有Zig 可以与之媲美)。

Golang 是一种相当好的语言吗?

我什至不会谈论每个人都在谈论Go 的东西,比如Goroutines,因为我认为我无法为该主题添加任何有趣的内容。

现在到了我不太喜欢的部分,测试部分对我来说仍然感觉很奇怪,因为它不是基于断言,但值得庆幸的是,现在使用泛型编写断言很容易:

func Equal[T 可比较](t *testing.T, got, Want T) { t.Helper() if got !=Want { t.Errorf(‘got: %#v, Want: %#v’, got, Want) }}func GreaterOrEqual[T cmp.Ordered](t *testing.T, 实际, 预期T) { t.Helper() if 实际预期{ t.Errorf(‘got: %v; Want:=%v’, 实际, 预期) }}//ETC.

泛型允许我编写并且我最终在每个项目上重写的另一段代码是必须*函数系列:

Golang 是一种相当好的语言吗?

func 必须(err 错误) { if err !=nil { 恐慌(err) }}func 必须1[T 任何](v T, err 错误) T { 必须(err) 返回v}func 必须2[T1 任何, T2 任何] (v1 T1, v2 T2, err error) T { Must(err) return v1, v2}//Must3, Must4, 等等.

这些函数非常有用,特别是对于我通常不想处理每个错误的脚本:如果遇到错误,我希望程序停止并打印堆栈跟踪(就像在有异常的语言中一样)。它基本上允许我更改代码:

内容, err :=os.ReadFile(‘file’)if err !=nil {panic(err)} 到:

content :=Must1(os.ReadFile(‘file’)) 在我看来,这使Go 更接近Python,而且我认为这对于脚本来说是一件很棒的事情。

Golang 是一种相当好的语言吗?

最后,说到我讨厌的事情,到目前为止最大的问题是缺乏可空性。在使用具有此功能的语言(如Kotlin 甚至mypy)后,这是彻底改变开发人员体验的事情之一。我仍然不喜欢错误处理(但是当它可以使用时它必须*改进很多事情),特别是因为它很容易丢失上下文

//badfunc readFileContents(file) ([]byte, error) {contents, err :=os.ReadFile(file) if err !=nil { return nil, err } returncontents, nil}//goodfunc readFileContents(file) ( []byte, error) { content, err :=os.ReadFile(file) if err !=nil { return nil, fmt.Errorf(‘readFileContents: 读取文件时出错: %w’, err) } return content, nil}

对于一种应该简单明了的语言来说,依赖如此多的魔力(例如内部包和主包)、大写名称来指示可见性(私有与公共)以及有时使用其JSON 序列化进行打印,这很奇怪,但无论如何,它都不能被输出。最后发现字段名没有大写,通过文件名(例如:foo_amd64.go)bar_linux.go、魔术注释(例如://go:build)等进行条件编译。

用户评论

Golang 是一种相当好的语言吗?
伤离别

我一直在学习 GO!感觉特性简洁易懂,并发处理能力也很强。对于后端开发来说确实挺适合的。不过对于一些需要大量库支持的项目来说,可能显得功能上会略有一些局限性。

    有9位网友表示赞同!

Golang 是一种相当好的语言吗?
十言i

完全同意,Go 真的是一门很棒的语言。性能极佳,代码结构清晰简洁,而且社区也越来越活跃了。特别是它的并发模型,确实能有效提升效率

    有15位网友表示赞同!

Golang 是一种相当好的语言吗?
怀念·最初

从初学者的角度来说, Go 的语法确实比 C++ 简洁很多,学习成本相对低一些。但是跨平台开发方面可能需要花费更多精力,这对我来说是一个小小的挑战

    有13位网友表示赞同!

Golang 是一种相当好的语言吗?
念旧是个瘾。

我用过很多语言,Go 确实很有自己的独特之处。虽然不是万能的,但对于web服务、并发程序等应用场景下,它的优势非常明显!

    有5位网友表示赞同!

Golang 是一种相当好的语言吗?
景忧丶枫涩帘淞幕雨

感觉 Go 是目前性价比最高的编程语言了。学习曲线较为平缓,上手容易,而且效率很高,用代码解决问题的感觉很好

    有13位网友表示赞同!

Golang 是一种相当好的语言吗?
我要变勇敢℅℅

怎么说呢?Go 确实是一个值得认真学习的语言,但我觉得它并不是万能的。对于一些特定领域的技术应用来说,其他的语言可能更合适。

    有19位网友表示赞同!

Golang 是一种相当好的语言吗?
不要冷战i

我目前正在用 C++ 开发项目,也想尝试 Go,看它的性能怎么样。毕竟,随着软件架构越来越复杂,并发处理的需求越来越重要了。

    有16位网友表示赞同!

Golang 是一种相当好的语言吗?
追忆思域。

作为一名资深开发者,我觉得 Go 的设计理念很值得学习,特别是其强调的简单性和清晰性。不过,对于一些大型复杂的项目来说,GO 的生态系统可能略显不足

    有17位网友表示赞同!

Golang 是一种相当好的语言吗?
非想

Go 真是个好语言啊!简洁明了,而且性能优异。越来越多的公司开始使用 Go 做开发,相信未来 Go 会更加受欢迎!

    有19位网友表示赞同!

Golang 是一种相当好的语言吗?
日久见人心

我之前对Golang不是很了解,看了你的文章后有了一些启发。确实是一款很不错的语言,我会尝试学习一下 看看 适应性怎么样。

    有6位网友表示赞同!

Golang 是一种相当好的语言吗?
在哪跌倒こ就在哪躺下

Go 的并发机制真的很强大,效率很高。但有时它的强类型特性会让我感觉比较限制一些,可能需要花更多时间去理解和适应 <br>

    有14位网友表示赞同!

Golang 是一种相当好的语言吗?
终究会走-

我是做嵌入式开发的,对 Go 的轻量化特点非常感兴趣。希望能尽快研究一下如何在我们的项目中应用 Go

    有14位网友表示赞同!

Golang 是一种相当好的语言吗?
凉话刺骨

我认为 "合理的好语言" 这个说法很有意思。每个语言都有它的优缺点,Go 恰好是那类优点明显并且容易上手的语言

    有13位网友表示赞同!

Golang 是一种相当好的语言吗?
何必锁我心

我个人更喜欢 Python 的灵活性,觉得 Go 有时候显得过于僵硬。不过我理解Go 是为了追求效率和性能而设计,两者各有优势 <br>

    有16位网友表示赞同!

Golang 是一种相当好的语言吗?
予之欢颜

Go 的确适合开发高性能、并发应用。但我还是认为,选择语言需要考虑项目具体需求,没有哪种语言是完美的

    有8位网友表示赞同!

Golang 是一种相当好的语言吗?
还未走i

学习了 Go 的基础知识后发现,这个语言的学习曲线真的并不陡峭,入门相对容易!对于初学者来说是一个很好的选择。

    有11位网友表示赞同!

Golang 是一种相当好的语言吗?
揉乱头发

Go 的官方文档写的非常好,学习起来非常方便。而且社区的支持也很到位,遇到问题很容易找到答案

    有11位网友表示赞同!

Golang 是一种相当好的语言吗?
绳情

我一直认为 Go 是后端开发的最佳选择之一,它的性能、并发能力和简洁性都令人印象深刻。 !

    有20位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/111722.html

(0)
小su's avatar小su
上一篇 2024年8月30日 下午7:00
下一篇 2024年8月30日 下午7:19

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注