一文熟悉 Go 的基础语法和基本数据类型
![一文熟悉 Go 的基础语法和基本数据类型](https://static001.geekbang.org/infoq/8e/8e391b75b153bf82f5ba5eca994ed92b.png)
耐心和持久胜过激烈和狂热。
前言
快速上手一门新的语言,首先要做的就是熟悉新语言的基本语法和基本数据类型,本文将对 Go 语言的基础语法和基本数据类型进行介绍。
Hello,World!
记得当初学习 C 语言的时候,第一个演示程序是输出 Hello World!
,Go 官网的第一个案例也是输出 Hello,World!
。
从 Hello,World!
输出案例可知:
声明包的关键字是
package
。导包的关键字是
import
。使用包里面的函数以
包名.函数
这种格式进行。函数的声明关键字是
func
。
有关 main 函数的一些要点
main
函数必须在main
包里。当
main
函数所在的文件被命名为main.go
时,可以直接使用go run ./main.go
命令直接运行程序。当
main
函数所在的文件名字不为main.go
,需要分以下两种情况,假设所在文件的名字为a.go
。1、当
a.go
文件里没有引用其他文件的变量等元素时,可以直接使用go run ./a.go
运行。
2、当
a.go
文件里有引用其他文件的变量等元素时,需要先使用go build ./a.go ./b.go
生成可执行文件,再运行exe
可执行文件。
关键字
除了上面提到的几个关键字以外,Go 语言还有其他关键字,一共 25 个关键字。
![](https://static001.geekbang.org/infoq/84/84ddd00a4546726a913901175ee11f17.png)
package
声明
语法格式:
package xxx
。
包名字由英文或英文与下划线组合组成。
注意点:
包声明时名字可以和文件夹的命名不一样。
![](https://static001.geekbang.org/infoq/49/49da97501df8c4d1c17e541078562b09.png)
同一个文件夹内,每个 Go 文件的包声明必须一致,否则会报错。
引入
包的引入方式:
import [alias] xxx
,alice
是一个可选值,为包起别名。
注意点:
引入包而没有使用,会报错。
匿名引入:
一般匿名引入,是为了使用包里面的 init
函数,它先于 main
函数之前执行
基本数据类型
Go 语言中的数据类型有很多,除了本文介绍的基本数据类型以外,还有指针、数组、结构体 struct
、管道 channel
、函数 func
、切片 slice
、接口 interface
、map 等。
![](https://static001.geekbang.org/infoq/e5/e50b5bc386947454b01ac66560a12556.png)
整形数据类型
有符号整数类型
![](https://static001.geekbang.org/infoq/f5/f53a0389a6c9b887c36bda23a2060064.png)
无符号整数类型
![](https://static001.geekbang.org/infoq/8a/8a0dbc976b0b5651411ad2d9a29f5b4a.png)
其他整数类型
![](https://static001.geekbang.org/infoq/34/3451dd1012f8fc85f0e265d35620319c.png)
浮点数据类型
![](https://static001.geekbang.org/infoq/7a/7ac247e915c83ab9004a205922e9a065.png)
字符类型
Go 没有字符类型,如果要存单个字符(字母),可使用
byte
类型代替。Go 中字符使用
UTF-8
编码。
布尔类型
布尔类型在 Go 中对应
bool
类型,它只允许取值为true
和false
。布尔类型占 1 个字节。
布尔类型适用于逻辑运算,一般用于程序流程控制。
字符串类型
字符串不可变(指的是其中字符的值不能变,例如
var name string = "cmy"
,然后操作name[0]='a'
是不行的)。如果字符串中需要换行或者字符串较复杂,可以使用反引号 ``。
基本数据类型的默认值
![](https://static001.geekbang.org/infoq/00/00ea29732b5f069d973f1ab3b3897a54.png)
常量和变量声明
常量声明:
const xxx type = value
变量声明:
var xxx type = value
在定义局部变量(方法或函数内部的变量)时,还可以使用 :=
去声明,切记是局部变量,全局变量不能使用 :=
,否则会报错。
Go 会使用类型推断来判断类型,数字会被理解为 int
或者 float64
,字符串会被理解为 string
。
注意点:
Go 推荐使用驼峰命名的方式。
常量被声明后,后续的值不能被修改。
常量和变量的名字,首字母是否大写,决定着它是否能够被包外文件访问,大写则可以被包外的 Go 文件访问,小写则认为是私有的,只能被包内的 Go 文件访问。
变量声明之后,没有使用,编译时会报错。
类型不匹配不能被赋值。
同一个作用域下,变量只能声明一次。
结尾
如果本文对你有帮助,欢迎点赞收藏加关注,如果本文有错误的地方,欢迎指出!
版权声明: 本文为 InfoQ 作者【陈明勇】的原创文章。
原文链接:【http://xie.infoq.cn/article/b1156cbfb72cd3478c104a02f】。文章转载请联系作者。
评论