Golang - 变量、变量的数据类型

一、变量的概念

1.1 为什么需要变量

一个程序就是一个世界,世界中有千千万万的事物。在程序中,变量就可以用来表示事物。
变量是程序的基本组成单位。

1.2 变量的介绍

变量相当于内存中一个数据存储空间的表示。通过变量名可以访问到变量(对应的值)

1.3 变量使用的基本步骤

1). 声明变量(也可以叫定义变量)
基本语法:var 变量名 数据类型
var a int声明了一个int类型的变量,变量名是a
2). 赋值
先声明,后给值。
var num int; num=777
3). 使用

1.4 初始化变量

在声明变量的时候,就给值。
var a = 50此时,编译器会使用类型推导
相当于把声明和赋值,合并成一步完成了。



二、变量使用的注意事项

2.1 变量表示内存中的一个存储区域

该区域的数据值可以在同一类型范围内不断变化。不是同一个数据类型就会报错!

2.2 该区域有自己的名称(变量名)和类型(数据类型)

2.3 Golang变量使用的三种方式

  1. 指定变量类型,声明后若不赋值,使用其对应类型的零值
  2. 根据值自行判定变量的类型(类型推导)
  3. 短变量声明方式,也就是海象运算符:=
    注意::=左侧的变量不应该是已经声明过的,否则编译器会报错!

2.4 多变量声明

一次性声明多个变量

package main

import "fmt"

func main() {
	//一次性声明多个变量
	var n1, n2, n3 int
	fmt.Printf("n1=%v\tn2=%v\tn3=%v", n1, n2, n3)
	//n1=0	n2=0	n3=0

	fmt.Println()

	//不能再重复定义n1,n2,n3
	var n11, n22, n33 = 100.11, "tome", 888
	//或者可以写成下面等价的短变量声明
	//n11, n22, n33 := 100.11, "tome", 888
	fmt.Printf("n11=%v\tn22=%v\tn33=%v", n11, n22, n33)
	//n11=100.11	n22=tome	n33=888
}

下例演示一次性声明多个全局变量:

package main

import "fmt"

//一次性声明多个全局变量
var (
	name   = "barry"
	age    = 30
	height = 161.8
)

func main() {
	fmt.Printf("name=%v\tage=%v\theight=%v", name, age, height)
	//name=barry	age=30	height=161.8
}

2.5 变量在一个作用域内不能重名

在同一级作用域内不能重复定义

2.6 变量包含三个部分

变量名、值、数据类型

2.7 变量没有赋值,编译器则会使用该数据类型的零值

  • 数值类型:0(整数、浮点数,都是0)
  • 字符串类型:""(一个空字符串)
  • 指针类型:nil(为空)



三、变量的数据类型

每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。

3.1 基本数据类型

官方对基本数据类型的涵盖介绍:

3.1.1 数值型
1.整数类型

用于存放一个整数

  • byte:1个字节
  • int8:8位的整数类型,相当于byte,一个字节
  • int16:2个字节
2.浮点类型
  • float32 4个字节,单精度
  • float64 8个字节,双精度
3.1.2 字符型

golang没有专门的char类型,使用byte来存储单个字母符号(注意是单个英文字母),要存储汉字至少需要int32
在golang中,采用UTF-8的编码格式,一个汉字占3个字节,一个byte存不进去

3.1.3 布尔型
  • true
  • false
3.1.4 字符串
3.1.5 rune

int32的别名,字符串中有中文时会用这个数据类型进行保存,它采用Unicode

3.2 派生数据类型

3.2.1 指针(Pointer)
3.2.2 数组
3.2.3 结构体(struct)
3.2.4 管道(Channel)
3.2.5 函数
3.2.6 切片(slice)
3.2.7 接口(interface)
3.2.8 map
posted @ 2019-12-16 20:49  root01_barry  阅读(578)  评论(0编辑  收藏  举报