Golang学习之路一开山篇

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

相关推荐
工业甲酰苯胺31 分钟前
聊一聊 C#线程池 的线程动态注入
java·开发语言·c#
zfenggo32 分钟前
c/c++ 无法跳转定义
c语言·开发语言·c++
向宇it42 分钟前
【从零开始入门unity游戏开发之——C#篇30】C#常用泛型数据结构类——list<T>列表、`List<T>` 和数组 (`T[]`) 的选择
java·开发语言·数据结构·unity·c#·游戏引擎·list
hakesashou1 小时前
python怎么看矩阵维数
开发语言·python
daopuyun1 小时前
GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——安全功能
java·开发语言·安全
qh0526wy1 小时前
pyqt5冻结+分页表
开发语言·python·qt
hjxxlsx1 小时前
探索 C++ 自定义函数的深度与广度
开发语言·c++
罗政2 小时前
PDF书籍《手写调用链监控APM系统-Java版》第12章 结束
java·开发语言·pdf
匹马夕阳2 小时前
详细对比JS中XMLHttpRequest和fetch的使用
开发语言·javascript·ecmascript
月巴月巴白勺合鸟月半2 小时前
一个特别的串口通讯
开发语言·串口通讯