十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇“Go语言的使用优点有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go语言的使用优点有哪些”文章吧。
我们提供的服务有:成都网站制作、成都做网站、微信公众号开发、网站优化、网站认证、新田ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的新田网站制作公司
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 基本上在哪里都能运行,并且只要能提供正确的 GOOS,GOARCH,CGO_ENABLED 或 GOARM 标记等,你可以在任何平台上构建它。这使 Go 也得以在多种架构上运行,比如 amd64,386 和 arm 等。
除开这些,Go 也是第一门拥有内置 WebAssembly 的语言。除了这些已经能支持的平台外,还有类似 TinyGo 这样的项目在推进 Go 更强大的跨平台型和便携性。
Go 被特意设计为一门简单的语言
Go 从诞生之初就以简单性为目标,到目前位置,它的简单性保持得会很成功。Go 的语言规范是你从头到尾看一遍(花不了多少时间)就能完全看懂的东西,这也意味着有些在别的语言中能够找到的特性在 Go 里它就是不存在的,其中一个争议比较大的就是 Go 缺少泛型。
以上就是关于“Go语言的使用优点有哪些”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。