内容简介:在上家公司工作了两月余,将go学了个大概,最近转回java,特在此总结之前对于go的学习,不讨论细节问题,从宏观一点的角度来看待这门语言。在这段时间的学习中,感触很深的就是:这可能是一个很优秀的语言,但是我感觉我始终是适应不了它,比较难驾驭,只能说能力有限。首先就吐吐槽吧,说一下不是很让人习惯的地方。
在上家公司工作了两月余,将 go 学了个大概,最近转回java,特在此总结之前对于go的学习,不讨论细节问题,从宏观一点的角度来看待这门语言。
在这段时间的学习中,感触很深的就是:这可能是一个很优秀的语言,但是我感觉我始终是适应不了它,比较难驾驭,只能说能力有限。
go的一些特性
首先就吐吐槽吧,说一下不是很让人习惯的地方。
1、无分号 ;
结尾,这可能是被吐槽的很多的地方了,这个确实很奇葩。比如在声明数组的时候,如果在内部使用了换行,则最后一个元素末尾需要加 ,
,否则会报错。
var strArray [4]string = [4]string{
"there",
"must",
"be",
"comma",
}
2、包级别的函数访问,这个在微服务中或者小项目中其实还ok,但是稍微大一点的项目,找个函数真的是痛不欲生,特别是看GitHub这类的别人的源码时候。这个是因为go对于字母大小写的特殊访问机制和包级函数访问机制导致的。
3、如果你习惯了隐式类型转换,那么真的很抱歉,你要习惯显示的类型转换了。当你使用 fmt.Println("c = " + c)
,我们假设 c
不是字符串,那么抱歉,你是一定要报错的。这个时候你需要使用熟悉的c方式,使用格式字符串,类似c中 printf
,对应的函数是 fmt.Printf
.
4、这个也是被吐槽的比较多的地方,就是当你声明一个局部变量的时候,它必须被使用。这个好像看起来没什么,但是有的时候真的就是会犯这种错误。
不想了不想了,毕竟这不是吐槽大会。接下来就谈谈这段时间学习的感触吧。
首先,我觉得go好像是面向结构体编程;因为struct真的有点随处可见了,当然确实是很好用。我们可以通过struct来定义方法,实现interface,是的,到处都是的 interface{}
,当然这是两回事,权当一个吐槽。
它的支持多核心功能很强,这也是为什么go在云计算和微服务风生水起的原因之一;强大的 goroutine
和 channel
使得它的并发能力惊人。
glide管理有点类似于 java 中的maven,不过和maven不同的是,这并不是一个仓库,而是一个类似映射表的存在,根本原因就是 go get
这个命令比较强悍的功能。说到这里就要吐槽一下,GFW的存在是学习go的噩梦,所以要想学好go,你必须得会挖墙脚。
函数的多个返回值会让你耳目一新的。
另外一个让你耳目一新的是函数可以作为参数!
defer的存在可以减少忘记关闭资源这种类似的失误。
方法和函数,函数和方法,傻傻分不清?
go的test真的挺。。。,嘛,官方的说法就是,test也是需要动脑的编程哦~
说到test,go有个挺强大的mock框架,叫做monkey, monkey.Patch
, xx.Unpatch
,挺怀念那段写mock的痛苦时光的,那时候学到了好多东西啊!
slice切片一定感觉很新奇吧,其实就是变长数组。还有个 append
函数让你用个爽。另外它还有妙用呢…
go是有指针的,但是你不能像c那样自由的操纵指针,go把指针控制在了很安全的范围内让你使用,就好像你在写代码的时候,有个大人在边上监视你的感觉,go整体给人的感觉就是这样,go的设计师有着强烈的控制欲。反正是为了你好嘛。
最常见的运算符大概就是它了 :=
,短变量声明,功能确实挺强的,这也得利于go的类型推导,就是不需要你显示的声明变量类型,编译器帮你做了。
go还有一个很常用的包就是flag包,可以让你设置命令行参数的哦。
go有 new
,有垃圾回收,是面向对象的语言,不过我还是觉得面向结构体比较准确。
go有一种叫做类型断言的行为,在你做类型转换的时候可能会用到,说实话,挺不习惯的。不过用多了也就习惯了。
go中一个比较常用的数据协议是Protobuf,以及一种常用的rpc框架是grpc。
go自带很好用的监控 工具 是pprof,常用来做性能优化。当然还有一些比较好用的开源框架,像zipkin,Prometheus等,我也只是涉猎了一下。
另外虽然 go build
很好用,但是工作中还是使用 make
编译程序,这个就很僵硬,因为它用起来不难,学习来不简单。
唉,写来写去好像最后还是变成了吐槽大会。
那最后就来个比较有态度的结尾吧。
当你想要驳倒Gopher的时候,有句很致命的话,就是:“go这种垃圾语言连泛型都没有实现”。
不过我到现在也没想通为什么没实现泛型就成了垃圾语言了,呵呵。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Security Testing Cookbook
Paco Hope、Ben Walther / O'Reilly Media / 2008-10-24 / USD 39.99
Among the tests you perform on web applications, security testing is perhaps the most important, yet it's often the most neglected. The recipes in the Web Security Testing Cookbook demonstrate how dev......一起来看看 《Web Security Testing Cookbook》 这本书的介绍吧!