课程培训网站建设百度推广一年多少钱
web/
2025/9/25 16:06:21/
文章来源:
课程培训网站建设,百度推广一年多少钱,微信公众号怎么制作网页,wordpress头像缓存插件这个月 Go 语言就将迎来它的10岁生日了#xff0c;于是我们特地列出了10条让你可以开心使用 Go 语言的理由。
作者#xff1a;4bytes
这个月 Go 语言就将迎来它的10岁生日了#xff0c;于是我们特地列出了10条让你可以开心使用 Go 语言的理由。 Map 集合/映射默认使用0值 …这个月 Go 语言就将迎来它的10岁生日了于是我们特地列出了10条让你可以开心使用 Go 语言的理由。
作者4bytes
这个月 Go 语言就将迎来它的10岁生日了于是我们特地列出了10条让你可以开心使用 Go 语言的理由。 Map 集合/映射默认使用0值
在 Go 中使用映射时即使你尚未为特定的键插入任何值也可以查询该键并且它所对应的值为0还不是nil除非存储的是指针。
因此如果你有这样一个映射 m:map[string]int然后你想得到 m[hello]返回的结果将是 0即使该位置并没有值。
这允许我们写代码时不需要再检查该键是否存在从而使代码更加整洁。想象如果我们想要保存某个字符串中一个字符出现的频率我们只需要这样做 func count(input string) (map[string]int) { m : map[string]int{}for _,s : range input { m[string(s)] // 这一步永远都会是安全的}return m}
上面的代码中我们无需在递增之前事先判断该键是否已经有值。
不变值
默认情况下当向一个方法或者函数传递值时你无法对它进行更改。当你确实需要更改这个值时你需要向这个值传递一个指针。它不像 Rust 那么严格后者在初始化变量时就需要标记它是可变变量。尽管如此这仍然意味着如果你调用了一个不接收指针的函数你可以确定它不会和你的结构所混淆。
值默认不会是 nil
不管在哪种语言里我都不是很喜欢 Null因此我很高兴在 Go 里默认情况下你的结构或者基本类型绝对不会指向 Nil这就消除了错误检查——当然有一个例外就是在使用指针的情况下因此在此情况中我们应该有错误处理机制。就算是 Tony Hoare 这个发明了 Null的人也曾经将它形容为一个“价值百万美元的错误”。 type myStruct struct{}func magic(m myStruct) {// 无指针此情况下不会出现 Nil}func magicp(m *myStruct) {// 可能出现空指针}
Nil 切片 空切片
是的这一点再次和 Nil 相关因为我真的很不喜欢 Nil 值。所以另一个让我爱上 Go 语言的原因就是如果你有一个 nil 切片它和一个空切片其实没什么区别因此你就不需要分开判断一个切片是否为 nil然后再判断它是否为 empty。刚好这也是我喜欢 Common Lisp 的理由之一当时我很意外 Go 语言也能有这个功能。 func main() {var s []intif len(s) 0{ fmt.Println(hello)}}
轻松发布相关库
在知道 Go 语言中发布库有多么容易之前我好像从来就没意识到这件事的重要性。我自己写了一些 Go 库而我唯一需要做的事就是把它们 push 到 GitHub 上之后别人可以直接在项目中引用这个项目 gogetgithub.com/4byte/{lib}。现在你也可以把它们添加成 go模块但这和往 GitHub 上发布库一样简单。
Go 拥有强烈的语法偏好
强制代码格式这一点有人喜欢就有人讨厌但 Go 确实是一门有着强烈语法偏好的语言。个人而言我很喜欢它的风格因为在代码审查上它移除了很多没用的部分。借 Rob Pike 的原话
Gofmt 不会是某个人的最爱但它也是每个人的最爱。
多范式编程
你所看到的很多 Go 代码都是偏向面向对象型的但它不一定非得是面向对象。实际上尽管 Go 在一些地方缺少某些语法和功能但 Go 其实是可以成为一门不错的函数式编程语言的。举个例子Go 语言可以满足柯里化(Function Currying)或者延续传递 CPS 风格的编程。
虽然你不一定要让整个代码库都呈现函数式编程的风格但在项目中的某些部分可以用到它。
Go 社区
不管是在 IRC 上的 freenode/go-nuts还是在 gophers.slack.com上你都能找到很多真正关心着这门语言的开发者。并且这些社区对刚刚转向 Go 的新人都很友好。更拉好感的是Go 社区在多样性和包容性上做出了很大努力比如 Git 上的 GoBridge 项目和Women Who Go项目等。
处处运行
Go 基本上在哪里都能运行并且只要能提供正确的 GOOSGOARCH,CGO_ENABLED 或 GOARM 标记等你可以在任何平台上构建它。这使 Go 也得以在多种架构上运行比如 amd64,386 和 arm 等。
除开这些Go 也是第一门拥有内置 WebAssembly 的语言。除了这些已经能支持的平台外还有类似 TinyGo 这样的项目在推进 Go 更强大的跨平台型和便携性。
Go 被特意设计为一门简单的语言
Go 从诞生之初就以简单性为目标到目前位置它的简单性保持得会很成功。Go 的语言规范是你从头到尾看一遍(花不了多少时间)就能完全看懂的东西这也意味着有些在别的语言中能够找到的特性在 Go 里它就是不存在的其中一个争议比较大的就是 Go 缺少泛型。
我个人非常支持 Go 语言的这种简单性它的好处之一就是让开发者可以迅速掌握该语言而在一个团队中也几乎不会出现这种你的同事使用了你从未见过的程序结构的可能。
阅读目录置顶)(长期更新计算机领域知识
阅读目录置顶)(长期更新计算机领域知识
阅读目录置顶)(长期科技领域知识
歌谣带你看java面试题
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81706.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!