不知道少了什么. 总觉得没以前快乐.--散文集《我在人间凑数的日子》

从零开始的Golang学习-学习笔记(1)

早就听说过Go语言,一直想学,但是一直没有行动起来。所以干脆趁着下午想起来就直接开始学习吧,用此系列博客来记录自己的学习笔记。引用python开发的一句话:Now is better than never.

前言:博主是以《The Way to Go》(《Go 入门指南》)这本书学习的,学习顺序基本上是按照书的顺序来的。

在开始前,还是简单了解一下Go语言的简介和它的特点吧。

GO语言

简介

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

特色

  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数组安全、编译迅速

用途

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

值得注意的是,因为垃圾回收和自动内存分配的原因,Go 语言不适合用来开发对实时性要求很高的软件。

Go 语言可以在 Intel 或 ARM 处理器上运行,因此它也可以在安卓系统下运行,例如 Nexus 系列的产品。

语言特性

Go 语言从本质上(程序和结构方面)来实现并发编程。

Go 语言没有类和继承的概念。但是它通过接口(interface)的概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说这是一门混合型的语言。

函数是 Go 语言中的基本构件。

Go 语言使用静态类型,所以它是类型安全的一门语言,加上通过构建到本地代码,程序的执行速度也非常快。

Go 语言作为强类型语言,隐式的类型转换是不被允许的,记住一条原则:让所有的东西都是显式的。

Go 语言其实也有一些动态语言的特性(通过关键字 var

Go 语言支持交叉编译,,比如说你可以在运行 Linux 系统的计算机上开发运行 Windows 下运行的应用程序。这是第一门完全支持 UTF-8 的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就连它的源码文件格式都是使用的 UTF-8 编码。(ps:博主被python的编码问题折磨已久,Go 这一点真的很赞)

特性缺失

许多能够在大多数面向对象语言中使用的特性 Go 语言都没有支持,但其中的一部分可能会在未来被支持。

  • 为了简化设计,不支持函数重载和操作符重载
  • 为了避免在 C/C++ 开发中的一些 Bug 和混乱,不支持隐式转换
  • Go 语言通过另一种途径实现面向对象设计来放弃类和类型的继承
  • 尽管在接口的使用方面可以实现类似变体类型的功能,但本身不支持变体类型
  • 不支持动态加载代码
  • 不支持动态链接库
  • 不支持泛型
  • 通过 recover 和 panic 来替代异常机制
  • 不支持静态变量

关于 Go 语言开发团队对于这些方面的讨论,你可以通过 Go 常见问题 页面查看。

总结

Go 语言优势

  • 简化问题,易于学习
  • 内存管理,简洁语法,易于使用
  • 快速编译,高效开发
  • 高效执行
  • 并发支持,轻松驾驭
  • 静态类型
  • 标准类库,规范统一
  • 易于部署
  • 文档全面
  • 免费开源

相关链接

官网:https://golang.org/

官方推特:@golang

Go 编程语言的维基百科:en.wikipedia.org/wiki/Go_(programming_language)

Go 语言相关资源的搜索引擎页面:gowalker.org

Kimiato

发表评论

电子邮件地址不会被公开。 必填项已用*标注

隐藏
变装
正在获取,请稍候...
00:00/00:00