前言

经由学长引荐,得到了可以学习Go的机会。Go是未来的一门趋势,有望取代目前互联网Java的地位。后端开发需学
本人主要在菜鸟教程上进行学习

Go语言数据类型

数据类型指定有效的Go变量可以保存的数据类型。在Go语言中,类型分为以下四类:

1、基本类型:数字,字符串和布尔值属于此类别。

2、聚合类型:数组和结构属于此类别。

3、引用类型:指针,切片,map集合,函数和Channel属于此类别。

4、接口类型

基本类型

在Go语言中,数字分为三个子类别:整数,浮点数,布尔类型

整数

在Go语言中,有符号和无符号整数都可以使用四种不同的大小,如下表所示。有符号的int由int表示,而无符号的整数由uint表示。
数据类型 描述
int8 8位有符号整数
int16 16位有符号整数
int32 32位有符号整数
int64 64位有符号整数
uint8 8位无符号整数
uint16 16位无符号整数
uint32 32位无符号整数
uint64 64位无符号整数
int in和uint都包含相同的大小,无论是32位还是64位。
uint in和uint都包含相同的大小,无论是32位还是64位。
rune 它是int32的同义词,也表示Unicode代码点。
byte 它是int8的同义词。
uintptr 它是无符号整数类型。它的宽度未定义,但是可以容纳指针值的所有位。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 使用整数 
package main
import "fmt"

func main() {

// 使用8位无符号整型
var X uint8 = 225
fmt.Println(X+1, X)

// 使用16位有符号整型
var Y int16 = 32767
fmt.Println(Y+2, Y-2)
}
//输出如下
// 226 225
// -32767 32765

与C++不同的是整数类型基本都是int附带位数,除此之外还有同Java相同的byte类型,以及新增的rune,uintptr

浮点数

同理,在Go中使用float32与float64代表浮点数,float64等同于c++中的double。

复数

在Go中增加了复数
将复数分为两部分,如下表所示。float32和float64也是这些复数的一部分。内建函数从它的虚部和实部创建一个复数,内建虚部和实部函数提取这些部分。
数据类型 描述
complex64 包含float32作为实数和虚数分量的复数。
complex128 包含float64作为实数和虚数分量的复数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//复数的使用 
package main
import "fmt"

func main() {

var a complex128 = complex(6, 2)
var b complex64 = complex(9, 2)
fmt.Println(a)
fmt.Println(b)

//显示类型
fmt.Printf("a的类型是 %T 以及"+ "b的类型是 %T", a, b)
}

Go语言变量

Go语言变量的声明十分有意思,有两种方式:

var关键字声明

(var variable_name type = expression)
在上述语法中,类型(type) 或=表达式可以删除,但不能同时删除变量声明中的两个。
如果删除了类型,则变量的类型由表达式中的值初始化确定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//变量的概念
package main

import "fmt"

func main() {

//变量声明和初始化
//显式类型
var myvariable1 = 20
var myvariable2 = "nhooo"
var myvariable3 = 34.80

// Display the value and the
// type of the variables
fmt.Printf("myvariable1的值是 : %d\n", myvariable1)

fmt.Printf("myvariable1的类型是 : %T\n", myvariable1)

fmt.Printf("myvariable2的值是 : %s\n", myvariable2)

fmt.Printf("myvariable2的类型是 : %T\n", myvariable2)

fmt.Printf("myvariable3的值是 : %f\n", myvariable3)

fmt.Printf("myvariable3的类型是 : %T\n", myvariable3)

}
//输出
// myvariable1的值是 : 20
// myvariable1的类型是 : int
// myvariable2的值是 : nhooo
// myvariable2的类型是 : string
// myvariable3的值是 : 34.800000
// myvariable3的类型是 : float64

如果删除了表达式,则该变量的类型为零,数字为零,布尔值为false,字符串为“”,接口和引用类型为nil。因此,在Go语言中没有这样的未初始化变量的概念。

短变量声明

(Myint :=100) 使用(:=)可达成既声明又复制的效果,在一般的变量声明中通常都使用这种方法。
##短声明智能声明局部变量,不可声明全局变量##