作者:李骁
在 Go 语言中,数据类型可用于参数和变量声明。
Go 语言按类别有以下几种数据类型:
布尔型:
布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true
。
数字类型:
整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
字符串类型:
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。
派生类型:
包括:
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
Go 也有基于架构的类型,例如:int、uint 和 uintptr,这些类型的长度都是根据运行程序所在的操作系统类型所决定的。
类型 | 符号 | 长度范围 |
---|---|---|
uint8 | 无符号 | 8位整型 (0 到 255) |
uint16 | 无符号 | 16位整型 (0 到 65535) |
uint32 | 无符号 | 32位整型 (0 到 4294967295) |
uint64 | 无符号 | 64位整型 (0 到 18446744073709551615) |
int8 | 有符号 | 8位整型 (-128 到 127) |
int16 | 有符号 | 16位整型 (-32768 到 32767) |
int32 | 有符号 | 32位整型 (-2147483648 到 2147483647) |
int64 | 有符号 | 64位整型 (-9223372036854775808 到 9223372036854775807) |
主要是为了表示小数,也可细分为float32和float64两种。浮点数能够表示的范围可
作者:李骁
Go语言是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型, 函数多返回值,错误处理,匿名函数, 并发编程,反射,defer等关键特征,并具有简洁、安全、并行、开源等特性。从语言层面支持并发,可以充分的利用CPU多核,Go语言编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。系统标准库功能完备,尤其是强大的网络库让建立Web服务成为再简单不过的事情。简单易学,内置runtime,支持继承、对象等,开发工具丰富,例如gofmt工具,自动格式化代码,让团队代码风格完美统一。同时Go非常适合用来进行服务器编程,网络编程,包括Web应用、API应用,分布式编程等等。
“Go让我体验到了从未有过的开发效率。”谷歌资深工程师罗布·派克(Rob Pike)如是说道,和C++或C一样,Go是一种系统语言,他表示,“使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。”
Go语言自2009年面世以来,已经有越来越多的公司开始转向Go语言开发,比如腾讯、百度、阿里、京东、小米以及360,而七牛云其技术栈基本上完全采用Go语言来开发。还有像今日头条、UBER这样的公司,他们也使用Go语言对自己的业务进行了彻底的重构。在全球范围内Go语言的使用不断增长,尤其是在云计算领域,用Go语言编写的几个主要云基础项目如Docker和Kubernetes,都取得了巨大成功。除此之外,还有各种有名的项目如etcd/consul/flannel等等,均使用Go语言实现。
Go语言有两快,一是编译运行快,还有一个是学习上手快。Go语言的学习曲线并不陡峭,无论是刚开始接触编程的朋友,还是有其他语言开发经验而打算学习Go语言的朋友,大家都可以放心大胆来学习和了解Go语言,“它值得拥有!”
让我们开始Go语言学习之旅吧!
1.1 Go安装
要用Go语言来进行开发,需要先搭建开发环境。Go 语言支持以下系统:
Linux
FreeBSD
Mac OS
Windows
首先需要下载Go语言安装包,Go语言的安装包下载地址为:https://golang.org/dl/ ,
作者:ffhelicopter(李骁) 时间:2018-04-15
一直都很懒,所以这几年也没写什么东西。这次写《Go语言四十二章经》,纯粹是因为开发过程中碰到过的一些问题,踩到过的一些坑,感觉在Go语言学习使用过程中,有必要深刻理解这门语言的核心思维、清晰掌握语言的细节规范以及反复琢磨标准包代码设计模式,于是才有了这本书。
Go语言以语法简单、门槛低、上手快著称。但入门后很多人发现要写出地道的、遵循 Go语言思维的代码却是不易。
在刚开始学习中,我带着比较强的面向对象编程思维惯性来写代码,但后来我转变了思路,因为我发现,带着面向对象的思路来写Go 语言代码会很难继续写下去,或者说看了系统源代码或其他知名开源包源代码后,围绕着Struct和Interface来写代码会更高效,代码更美观。虽然有人认为,Go语言的Strcut 和 Interface 一起,配合方法,也可以理解为面向对象,这点我姑且认可,但开发中不要过意考虑这些。因为在Go 语言中,Interface接口的使用将更为灵活,刻意追求面向对象,会导致你很难理解接口在Go 语言中的妙处。
作为Go语言的爱好者,在阅读系统源代码或其他知名开源包源代码时,发现大牛对这门语言的了解之深入,代码实现之巧妙优美,所以我建议你有时间多多阅读这些代码。网上有说Go大神的标准是“能理解简洁和可组合性哲学”,的确Go语言追求代码简洁到极致,而组合思想可谓借助于struct和interface两者而成为Go的灵魂。
Function,Method,Interface,Type等名词是程序员们接触比较多的关键字,但在Go语言中,你会发现,其有了更强大,更灵活的用法。当你彻底理解了Go语言相关基本概念,以及对其特点有深入的认知,当然这也这本书的目的,再假以时日多练习和实践,我相信你应该很快就能彻底掌握这门语言,成为一名出色的Gopher。
这本书适合Go语言新手来细细阅读,对于有一定经验的开发人员,也可以根据自己的情况,跳开一些章节来看。最后,希望更多的人了解和使用Go语言,也希望阅读本书的朋友们多多交流。虽然本书中例子都经过实际运行,但难免出现错误和不足之处,烦