这篇文章给大家聊聊关于Golang 是一种相当好的语言吗?,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
我喜欢Go 的原因对于某些程序员来说可能是显而易见的,但无论如何还是值得讨论的。自从我第一次听说该语言以来,我就很欣赏该语言默认生成静态二进制文件并且编译时间很快,现在我经常使用该语言,我更加欣赏这一点。在更改一行代码并运行go run 后几乎立即获得反馈对于开发人员体验非常有益。以前遇到一些自动化相关的问题时,我第一个想到的就是用Python来实现自动化。现在我基本用Go。
然后Go 的启动时间很快。我对延迟有点敏感,特别是对于命令行实用程序,当我期望它们快速响应时,这是我在Python 中可能遇到的问题的一部分,尤其是对于更复杂的程序,但在Go 中,这种情况很少成为一个问题。
模块也很棒。它并非没有怪癖(就像Go 生态系统中的所有内容一样),但仅使用CLI 就可以轻松地在项目中添加和管理依赖项,这一事实对于Go 来说是很棒的。
自从我开始谈论go CLI 以来,它一直是一个很棒的工具!事实上,您可以管理依赖项、生成文档、格式化代码、lint、运行测试/基准测试/模糊器、检查代码的竞争条件等,所有这些都只需使用该语言的“编译器”即可,但是,这真的很棒。这仍然可能是我所知道的任何编程语言中最好的开发人员体验之一(也许只有Zig 可以与之媲美)。
我什至不会谈论每个人都在谈论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.
泛型允许我编写并且我最终在每个项目上重写的另一段代码是必须*函数系列:
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,而且我认为这对于脚本来说是一件很棒的事情。
最后,说到我讨厌的事情,到目前为止最大的问题是缺乏可空性。在使用具有此功能的语言(如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)等进行条件编译。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/111722.html
用户评论
伤离别
我一直在学习 GO!感觉特性简洁易懂,并发处理能力也很强。对于后端开发来说确实挺适合的。不过对于一些需要大量库支持的项目来说,可能显得功能上会略有一些局限性。
有9位网友表示赞同!
十言i
完全同意,Go 真的是一门很棒的语言。性能极佳,代码结构清晰简洁,而且社区也越来越活跃了。特别是它的并发模型,确实能有效提升效率
有15位网友表示赞同!
怀念·最初
从初学者的角度来说, Go 的语法确实比 C++ 简洁很多,学习成本相对低一些。但是跨平台开发方面可能需要花费更多精力,这对我来说是一个小小的挑战
有13位网友表示赞同!
念旧是个瘾。
我用过很多语言,Go 确实很有自己的独特之处。虽然不是万能的,但对于web服务、并发程序等应用场景下,它的优势非常明显!
有5位网友表示赞同!
景忧丶枫涩帘淞幕雨
感觉 Go 是目前性价比最高的编程语言了。学习曲线较为平缓,上手容易,而且效率很高,用代码解决问题的感觉很好
有13位网友表示赞同!
我要变勇敢℅℅
怎么说呢?Go 确实是一个值得认真学习的语言,但我觉得它并不是万能的。对于一些特定领域的技术应用来说,其他的语言可能更合适。
有19位网友表示赞同!
不要冷战i
我目前正在用 C++ 开发项目,也想尝试 Go,看它的性能怎么样。毕竟,随着软件架构越来越复杂,并发处理的需求越来越重要了。
有16位网友表示赞同!
追忆思域。
作为一名资深开发者,我觉得 Go 的设计理念很值得学习,特别是其强调的简单性和清晰性。不过,对于一些大型复杂的项目来说,GO 的生态系统可能略显不足
有17位网友表示赞同!
非想
Go 真是个好语言啊!简洁明了,而且性能优异。越来越多的公司开始使用 Go 做开发,相信未来 Go 会更加受欢迎!
有19位网友表示赞同!
日久见人心
我之前对Golang不是很了解,看了你的文章后有了一些启发。确实是一款很不错的语言,我会尝试学习一下 看看 适应性怎么样。
有6位网友表示赞同!
在哪跌倒こ就在哪躺下
Go 的并发机制真的很强大,效率很高。但有时它的强类型特性会让我感觉比较限制一些,可能需要花更多时间去理解和适应 <br>
有14位网友表示赞同!
终究会走-
我是做嵌入式开发的,对 Go 的轻量化特点非常感兴趣。希望能尽快研究一下如何在我们的项目中应用 Go
有14位网友表示赞同!
凉话刺骨
我认为 "合理的好语言" 这个说法很有意思。每个语言都有它的优缺点,Go 恰好是那类优点明显并且容易上手的语言
有13位网友表示赞同!
何必锁我心
我个人更喜欢 Python 的灵活性,觉得 Go 有时候显得过于僵硬。不过我理解Go 是为了追求效率和性能而设计,两者各有优势 <br>
有16位网友表示赞同!
予之欢颜
Go 的确适合开发高性能、并发应用。但我还是认为,选择语言需要考虑项目具体需求,没有哪种语言是完美的
有8位网友表示赞同!
还未走i
学习了 Go 的基础知识后发现,这个语言的学习曲线真的并不陡峭,入门相对容易!对于初学者来说是一个很好的选择。
有11位网友表示赞同!
揉乱头发
Go 的官方文档写的非常好,学习起来非常方便。而且社区的支持也很到位,遇到问题很容易找到答案
有11位网友表示赞同!
绳情
我一直认为 Go 是后端开发的最佳选择之一,它的性能、并发能力和简洁性都令人印象深刻。 !
有20位网友表示赞同!