这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
go语言与我常用的Java语言乍看相似, 细看有很大的不同, 所以做一篇关于基础语法的笔记, 供自己学习使用.
变量的基本数据类型
此处列举出go语言常用的数据类型
-
布尔: bool
-
数字: int, float32, float64
-
字符串: string
-
派生类:
- 指针
- 数组
- 结构体
- 函数
- 接口
- map
变量的声明
自动类型推断
go语言的变量名可以由字母, 数字和下划线组成, 它的变量声明和JavaScript相似, 可以使用
var a = 1
var b = "string"
var c = true
这样的方式声明变量.
这种方式是自动的类型推断, 可以根据右边值的类型自动推断左边变量的数据类型.
但是, 要注意的是, go语言是一个强类型语言, 一个变量的类型在它声明的时候就已经被确定, 无法更改, 所以, 如下的写法是错误的:
var a = 1
a = "str" //这种写法是错误的, 因为变量a已经是int类型了.
既然go是强类型语言, 那么必然会有另一种声明方式, 那就是:
显式类型声明
让我们回顾一下C++的变量声明方法吧
int a = 1;
char b;
auto c = 2.1;
学过C++的同学应该都知道, 前两个声明语句是显式地将变量类型写了出来, 是最经典的声明语句, 而最后一个则是C++11新增的auto语法, 也可以自动类型推断.
看起来C++中的auto语法与go语言中的var好像是相同的作用, 那么go语言的显式类型声明是和C++一样吗?
让我们来看看在go中是如何指定变量类型的:
var a int = 1
var b string
var c bool = true
令人难以置信的是, go语言竟然将变量类型写在了变量的后面, 也就是说, 与C++的auto不同, go语言的var语法只是表名了这句话是声明语句, 而是否是自动类型推断, 是要看变量的后有没有变量类型.
此外, 可以注意到, 第二行中的声明语句没有附初始值, 这样的语句在go中会默认附上零值.
海象运算符
在go中, 还有一种变量声明方式, 即为海象运算符:=
例如
a := 1//这种写法等于 var a = 1
它是一种简写形式, 可以精简代码.
多变量声明
不多说, 直接上代码:
var a1, b1, c1 int
a1, b1, c1 = 1, 2, 3
var a2, b2, c2 = 1, 2, 3
a3, b3, c3 := 1, 2, 3