GO学习笔记——做一场华丽的转型(1)

说实话我是C++的忠实粉丝,但是好像,每一个语言的忠实用户都认为该语言是世界上最好的语言(PHP使用者这个时候就有话说了)。我学了C/C++大概有两年半,从真正开始认真学也就两年时间。我认为C++很好,真的很好,作为一个较老的语言,他的第三方库非常的多,功能也越来越强大,热度始终在编程语言排行版的前三左右。

但是我还是觉得,技多不压身。作为主语言,目前还是只会C/C++,其他的Python,Java都也只是略懂皮毛。最近刚找到一份满意的工作,所以想在即将去工作之前的这几个月时间内,抽出时间学一些新的东西(毕竟去公司之后可能就是业务方面的多一些了)。

我注意到了GO语言。

我做过一个新闻网站,涉及到了很多高并发的问题。在做的过程中,就有很多人推荐说,GO做高并发非常好(原生地支持高并发),当时就觉得,以后有机会一定要去接触一下这门语言。

另外,找到工作以后,HR跟我说他们公司后台主要用的是C++,PHP和GO,于是我想,这么巧?所以就下定决心了,开始学GO语言,一则它真的吸引了我好久,二则因为公司需要,三则它真的是一个非常新,非常好,在中国越来越火的编程语言。另外听说GO做区块链也非常棒哈哈,好了义不容辞。

说一说GO的优点吧(吹一吹我新学的语言)

  1. GO是强类型语言,这一点倒类似C++,在使用一个变量前必须明确该变量的类型。当然了,GO可以不写变量类型而让编译器来推导出变量类型,这一点C++11中的auto关键字也做到了,当然那样我还要写一个auto,而GO不用。另外还要补充的一点是,GO也是静态类型语言,编译时就知道变量类型,一个变量一旦被声明成一个类型,就不可以变为另一个类型(除非类型转换,但是也只能在兼容类型之间做类型转换,比如int不可以转换为string),相比于动态类型语言(Python),速度要快很多。

  2. GO是编译型语言。编译型语言相对于解释型语言最大的好处就是它的速度非常快。因此上面的说的静态类型+编译型语言,就决定了GO语言程序的运行速度,GO具有堪比与C的运行速度(当然C还是最快的),和C++的运行速度也是差不多了,比Python差不多要快30倍

  3. GO具有脚本化的语法,语法简单。说真的,作为一个C++忠实用户,我也觉得C++的语法太复杂了,所以这也是我转型的一个方面,写的代码少并且完成效率差不多毕竟是个好事。后续的学习过程中,一些语法方面的细节,我也会仔细分析和C++的差别

  4. 支持多种编程范式,包括函数式编程以及面向对象编程。不过需要注意的是,GO并没有像C++和Java一样有一个class来表示类,它本身其实没有对象这样的概念,是用strcut来模拟面向对象的。因为没有对象,所以GO语言也没有继承多态这些概念(这些东西其实都是由接口来实现的),也没有泛型编程(学C++的时候继承多态确实把我学的够呛)。那么GO语言有什么?GO语言有接口,函数式编程,接口interface在GO语言中是一个很重要的东西,面向接口的编程也是GO的一个主流编程范式

  5. GO语言相比于别的语言最大的好处就是,GO原生的支持并发。像我在写C++的时候,都是调用一些系统调用来创建线程(其实C++有自己封装的和线程相关的函数,我没用而已)。这里需要注意的是原生的支持和通过第三方库来支持的区别,GO是在语法上支持,而C++需要调用第三方库来支持(std::thread,其实也是一个C++的标准库吧)。这部分概念其实还是要到后面真正学到GO并发了才会了解到,所以这里先“吹”为敬。之后会学到goroutine和channel,这是GO并发的关键

之后的博客文章,我都会对一些语法以及一些细节的地方,将GO和C++做一些对比,希望通过对比来快速地上手GO语言。

好了先吹这么多,总之GO吸引到了我,我就开始学了,今天先写这篇文章,开启一场华丽的转型。

你可能感兴趣的:(GO语言学习笔记)