一架梯子,一头程序猿,仰望星空!

go 语言基本数据类型


本章主要介绍,GO语言的变量和基本数据类型。

1.注释

单行注释

  // 单行注释

多行注释

/*
  多行注释
 */

2.变量

2.1. 变量定义

语法:

var 变量名 变量类型

例子:

// 定义一个int类型变量
var i int
// 定义三个bool类型变量,变量名之间使用逗号分隔
var c, python, java bool

2.2. 变量初始化

定义变量的时候直接初始化

语法1:

var 变量名 变量类型 = 初始值

例子:

// 定义变量i, 数据类型为int, 初始值为10
var i int = 10
// 定义两个int变量i和j,  并且i的初始值为1,j的初始值为2
var i, j int = 1, 2

语法2:

不指定变量的类型,编译器通过初始值的类型,自动推导出变量的类型。

var 变量名 = 初始值

例子:

// 定义变量i,初始值为10,没有指定i变量的数据类型,编译器会根据10推导出i为int类型
var i = 10

// 定义三个变量c, python, java,他们的初始值分别如下:
// c = true   自动推导出类型bool
// python = false  自动推导出类型bool
// java = "no!" 自动推导出类型string
var c, python, java = true, false, "no!"

注意:一个变量一旦初始化后,变量类型就不能改变了,例如:将一个变量初始化为int类型,就不能将string类型的值赋值给这个变量,否则编译器会报错。

错误例子:

var i = 10
i = "hello" // 错误的,类型不匹配。

2.3. 短变量声明

go语言提供了一种定义和初始化变量的快捷方式,短变量声明符号(:=),我们可以不必预先定义变量,而是在使用的时候直接初始化和定义变量

例子:

i := 20

i变量没有预先定义,这个时候将变量i初始化为20,因为20是int类型,所以也定义了一个int类型的变量。

例子:

// 初始化并定义一个string类型变量
s := "www.tizi365.com"
// 初始化并且定义一个bool类型变量
ok := false

在同一个作用域内,一个变量只能被定义一次,也就是说短变量声明符,在同一个作用域内,一个变量只能用一次。

例子:

// 定义并且初始化变量i
i := 10
i = 200 // 给变量赋值,注意这里等号前面没有冒号

i := 100 // 再次定义并且初始化变量i, 这里编译器会报错,变量重复定义了。

3.数值类型

下面是GO语言支持的基本数值类型

整数

从8位到64整数

int  int8  int16  int32  int64

注意int类型,根据不平台可能是32位也可能是64位

无符号整数类型

uint uint8 uint16 uint32 uint64 uintptr

uintptr是一种指针类型。

byte 类型,是uint8的别名,占一个字节。

浮点数类型

float32 float64

综合例子:

var i int32 = 10
var j uint64 = 1000
var d float64 = 25.3

4.字符串类型

字符串使用双引号包括字符,go语言的字符串跟java的字符串类似,可以动态的调整自己的存储空间。

// 定义string类型变量
var s string
// 赋值
s = "hello"

或者

// 直接初始化一个字符串变量
s := "hello world"

通过len函数获取字符串长度

l := len(s)

字符串拼接

s := "hello"
// 通过 + 号拼接字符串
s2 := s + " world"

5.bool类型

布尔类型,只有true和false两种值

// 定义一个bool类型变量, 并且初始化为false
var yes bool = false

// 直接初始化一个bool变量,值为true
ok := true

6.零值

零值,也就是默认值,如果在go语言中,我们定义一个变量但是没有给变量一个初始值,那么变量的零值如下:

  • 数值类型,默认值是0
  • 布尔值类型,默认值是false
  • 字符串类型,默认值是 ""

7.数据类型转换

go语言是强类型语言,如果一个变量是int类型,不能直接将int32类型的值赋值给int类型,必须要做类型转换。

对于数值类型,go语言提供了快捷的类型转换语法。

语法:

数据类型(变量)

例子:

var i int = 100
var j int64
// 将i转换成int64类型
j = int64(i)

var d float64
// 将i转换成float64类型
d = float64(i)

8.常量

常量就是一旦被定义,值就不能被改变。

例子:

// 定义常量Pi
const Pi = 3.14
// 定义字符串常量IP
const IP = "127.0.0.1"

// 语法2,一次定义Big和Small两个常量
const (
    Big = 1 << 100
    Small = Big >> 99
)

9.综合例子

文件: main.go

package main

// 导入fmt包
import "fmt"

// 在函数外面定义全局变量
var i int = 0

// 入口函数main
func main() {
	// 给变量i赋值
	i = 100

	// 定义string变量
	var s string
	// 给变量s赋值
	s = "hello"

	// 打印变量值
	fmt.Println(s)

	// 短变量声明用法
	yes := false
	str := "www.tizi365.com"
	code := 200

	// 赋值
	yes = true
	str = "https://www.tizi365.com"
	code = 301

	// 打印变量值
	fmt.Println(yes)
	fmt.Println(str)
	fmt.Println(code)
}

运行命令:go run main.go

运行后输出:

hello
true
https://www.tizi365.com
301