我的 GO~GO~GO 行(liu)军(shui)记(zhang)
大致看了一下go,包括它的变量申明,控制语句,数组切片,函数接口方法,结构体等
很多人说go简洁,可能有的地方简洁吧,但有的地方我还是有点很不习惯(JAVA程序猿一枚)
声明一个变量,关键字有2种:var,type
eg:var a int = 5
为啥要这么设计,在js中,数字、、浮点、字符串神马的都是用var来声明的,但go中有了个var,让人感觉它好像是一个弱语言。但后面又跟一个int,表明它的int型的。那既然这样,你为什么不直接 int a = 5.不就完事了吗
其实上面这段代码,也可以这么写,a := 5.编译器自动帮你转型,但为什么要var a int = 5,而不是int a = 5,我还是不明白
至于type,我还不是很明白,暂时就先不说了
变量的访问类型,go里面是这么设计的,Name string age int
首字母大写代表public,首字母小写代表private。乍一听很神奇,确实省了不少代码。
但还是有问题,protected的你怎么表示。。。。还是说go就压根没有protected。保护类型用的确实少了一点,但你不能没有啊,那我需要用到保护类型的时候怎么办,估计go有他的解决方案吧,我还没学到
go的控制语句,设计上是这么说的,go只有一种循环,那就是for循环。go的for循环可以取代其他所有的循环 for a:=0;a<3 { a++ } PS.差点又下意识的把大括号打上 - -
但想一下,哪门语言不是这样,难道java里面for不能代替while?存在while肯定是有的地方,用while比用for来的舒服。但go的这个for。。。好吧,等我以后用多了,可能就明白了
函数接口方法
今天我就是看到这一章的时候,没法坚持看完的,这也是我go学到现在(也就2天 - -)觉得设计得最不合理的地方。为什么要出现接口这个概念,就是希望接口和实现能够分离,接口定义的是标准,具体怎么实现,那是另外一件事。这也是很多时候,java要求面向接口编程的原因。
但在go里面,一方面我不能明确的看到这个接口被哪些东西实现了,并且接口和实现还写在一起,这完全违背了接口设计的初衷。代码稍微有点长,我就不贴了。总之go的这种接口方式我还是很不能适应。
结构体
这个玩意在java中没有,是C里面的概念。而go并不是一个完全的OO语言,我感觉这里的结构体大致可以理解成对象。不过我还是觉得用类来写比较好,但可惜的是,go没有类这个概念
哎~~多么伟大的一门语言(其实我也不知道伟不伟大),但就目前为止,而我感觉go优秀的地方并不多。代码比java简洁(貌似随便哪一门语言都比java代码简洁 - -),但并不一定简洁的就是好的。代码是给人看的,0011那才是给计算器看的,我总感觉代码一多,go就不太好维护了,感觉吧。
毕竟才学2天,不懂的还有很多。暂定一个目标吧,学完go的基础部分,再把go-web学完,做一个博客啊网站什么的,和J2EE的对比一下。既然大家都在说go很不错,那必然肯定有它的过人之处,可能我还是不太理解go的设计模式和设计思想,慢慢来吧。
当一个产品,完全只为满足用户的需要的时候,这个产品注定不能登峰造顶。
为什么iPhone不能XXX,没错,就不能! ---- Jobs
iPhone可以支持XXX吗,嗯,马上给你做 ---- Cook