Golang学习之路一开山篇
初识 Golang
我第一次接触 Golang 是在2016年, 当时在深圳工作, 项目需要用Golang, 当时在犹豫要不要学还是走, 毕竟Java开发搞了很多年了, 说放弃还是有难度的, 其实也不是放弃Java, 说不定其他项目还是要使用Java. 在领导的再三劝说下, 开启了Golang学习之路, 领导给了一周时间学习, 然后就在项目开发中边学习边开发。
我觉得一个好的程序员不可能只会一门语言, 要不断学习新技术提升自己,实现更大的价值.
刚开始用 Golang 这种静态语言之后,给我的编程思想带来了冲击和震撼,不夸张的说,有一种打开了另一扇窗的感觉。Golang上手非常容易, 开发效率很高, 而且Golang性能非常好, 很容易的就能使程序拥有并发能力。像Java项目,不管是jar包或war包本身就有几十上百M, 运行起来占用内存也是上百M, 还需要安装jdk环境才能运行, 在256M内存想跑起来很困难. Golang就不一样, 编译出来的二进制特别小,就几M到十几M, 不需要安装任何环境,就可以运行起来, 在128M或256M的内存运行绰绰有余.
Golang简介
如图为Golang的logo
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
Go语言是2007 年开发2009年发布的一款开源编程语言
Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
Go 是一种跨平台(Mac OS、Windows、Linux 等)静态编译型语言。拥有媲美 C 语言的强大性能,在普通计算机上能几秒内快速编译一个大项目,开发效率跟动态语言相差无几。
很多开源项目都是使用 Go 语言开发的,其中包括 Docker、Etcd、Codis、Consul 和 Kubernetes。
Go大神
Go语言的主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pike)和罗伯特.格里泽默(Robert Griesemer)。这三个都是大神
肯.汤姆逊(Ken Thompson):图灵奖(计算器界的诺贝尔奖)得主,Uinx发明人(Linux基于Uinx内核开发),B语言作者(C语言前身),还做飞行员,后来被谷歌挖走。
罗布.派克(Rob Pike):Unix团队和Plan 9操作系统计划的成员,与Ken老爷子共事多年,并共创出广泛使用的UTF-8 字符编码。
罗伯特.格里泽默(Robert Griesemer):曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8
膜拜一下大神的容颜:Ken老爷子(左),Rob Pike(右)
开发Go语言的初衷
根据Go语言开发者自述,近10多年,从单机时代的C语言到现在互联网时代的Java,都没有令人满意的开发语言,而 C++往往给人的感觉是,花了100%的经历,却只有60%的开发效率,产出比太低,Java和C#的哲学又来源于C++。并且,随着硬件的不断升级,这些语言不能充分的利用硬件及CPU。
Go的主要目标是, 兼具 Python 等动态语言的开发速度和 C/C++等编译型语言的性能与安全性
Go 语言的所有设计者都说,设计 Go 语言是因为 C++ 给他们带来了挫败感。
在 Google I/O 2012 的 Go 见面会上,Rob Pike 是这样说的:我们做了大量的 C++ 开发,厌烦了等待编译完成,尽管这是玩笑,但在很大程度上来说也是事实。
Go语言特性
静态编译(编译器将源代码编译成二进制(或字节码)格式;在编译代码时,编译器检查错误、优化性能并输出可在不同平台上运行的二进制文件,Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发速度和易维护性,有人形容Go语言:Go = C + Python , 说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发)
类型安全
内存安全 (自动垃圾回收)
编译速度快(构建一个程序的时间只需要数百毫秒)
函数可以返回多个值
反射
网络编程、系统编程、并发编程、分布式编程。
部署简单、并发性好、语言设计良好、执行性能好。
参考链接: https://www.cnblogs.com/zhichaoma/p/12509268.html