这周接触了go,应该是早就开始了解过了,只不过这周分方向了,我后面就会和它扣在一起。短短几天把go基础学完了,自己想了想就自己发表一下对于go的看法。
首先在写法上,它与java的不同就是变量名与变量类型前后顺序不同,go是变量名在前面,当然这前后顺序并没有什么独到的特点,每个语言的开发者团队都有自己的考虑,go就是为了防止变量太多,程序员出现bug时可以更简单的找到问题所在。
在数组上,go的数组也是他的类型之一,一旦定义,数组就不能改变,所以这就很局限,所以切片就出来了,它最大的特点就是可以扩容操作,当然还有很多优势,就不列举了。指针对于学java的人就是个陌生的概念,go的指针与c语言的指针有所不同,怎么说呢,go初始化对象没有java那么简单,它往往需要更一步的操作,例如make函数,这只是一种方式,但都有指针的应用,对于引用类型的地址存取可以更准确有效的进行操作,指针的应用就是如此,而且注意他的代码有时候要好好注意,因为写的复杂容易混淆而引起bug。
go的引用类型除了切片,还有映射就是map,没什么可说的,和java的不同也没多大,就是一个存值和地址的东西,方便进行增删改查(个人理解)
go的结构体是弥补它没有类的缺陷,但这并不说明java没有结构体,只不过java比go就是小巫见大巫,go的结构体就是实现面向对象的一种方式。
go的接口注重与做了什么事,而不是是什么,就是一个方法集合的封装,而且他的接口定义以后,子接口结构体不用非要把所有的方法体都写出来也可以使用这个接口,这可比java聪明多了。go的反射主要侧重于对于值以及类型的返回操作,而且反射虽然方便,但尽量少用,弊端还是很大的,代码复杂,容易出bug。
go的并发,引入新概念协程,不同于基于堆(最小2Mb)的线程,他是基于栈(最小2kb)而且可以定义数量非常庞大的协程群,所以高并发的优势可以很容易的就看出来。
go的网络编程,我个人觉得这不仅仅限于go语言,计算机的七大层可以好好的了解,各种协议以及作用有利于理解网络的世界,当然值得一提的是go的客户端以及服务端编程以及网络联系真的很好理解,代码也不多.....
学的太粗鄙了,也有点混乱,后面写聊天室的时候好好练练。