Go 语言变量的数据类型

变量的数据类型

1、基本数据类型
1)、数值型

  • 整数类型 int、int8、int16、int32、int64、unit、unit8、unit6、unit32、unit64、byte
    Go 语言变量的数据类型Go 语言变量的数据类型Go 语言变量的数据类型整型的使用细节:
    a、Golang 个整数类型分:有符号和无符号,int、unit的大小和系统有关。
    b、Golang 的整数默认声明为int型。
    c、如何在程序中查看某个变量的字节大小和数据类型:
    fmt.Printf(“i 的数据类型:%T,i 占用的字节数是:%d”, i, unsafe.sizeof(i))。
    d、Golang程序中整型变量在使用时,遵守保小不保大的原则,即:在保证程序正确运行下,尽量使用占用空间小的数据类型。【如:年龄】
    e、bit:计算机中的最小存储单位。byte:自算计中基本存储单元。1byte = 8bit

  • 浮点类型 float32、float64
    小数类型就是用来存放小数的。
    Go 语言变量的数据类型浮点型使用细节:
    a、Golang 浮点类型有固定的范围和字段长度,不受具体OS(操作系统)的影响。
    b、Golang 的浮点型默认声明为float64
    c、浮点型常量有两种表示形式
    十进制数形式,如:3.14、0.12、.512(必须有小数点)
    科学计数法形式,如:5.1234e2 = 5.1234*10的2次方,5.12E-2 = 5.12/10的2次方
    d、通常情况下,应该使用float64, 因为它比float32更精确。

2)、字符
Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般用byte来保存。
字符串就是一串固定长度字符连接起来的字符序列。Golang 的字符串是由单个字节连接起来组成的。也就是说对于传统的字符串是由字符组成,而Go的字符串不同,它是由字节组成的。
Go 语言变量的数据类型a)、如果我们保存的字符在ASCII表的,比如[0-9,a-z,A-Z]直接可以保存到byte
b)、如果我们保存的字符对应的码值大于255,这时我们可以考虑使用int类型保存
c)、如果我们需要按照字符的方式输出,这时我们就需要格式化输出,即:fmt.Printf("%c", c1)

3)、布尔型
a)、布尔类型也叫bool类型,只允许取值true和false
b)、bool类型占用1个字节
c)、bool类型适用于逻辑运算,一般用于流程控制。

4)、字符串类型
字符串就是一串固定长度字符连接起来的字符序列。Golang 的字符串是由单个字节连接起来组成的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。

字符串类型使用细节:
a)、Go语言的字符串的字节使用UTF-8编码标识Unicode文本,同意使用UTF-8编码,中文乱码问题就不会困扰程序员。
b)、字符串一旦被赋值,就不能修改:在Go中字符串是不可变的。
c)、字符串的两种表现形式

  • 双引号,会识别转义字符。

  • 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果。
    d)、字符串拼接,“+”
    e)、当字符串太长时,"+"要保留在上面一行,可以按照如下操作:

    var str = “hello” + “hello” + “hello” + “hello” +
    “world!”

基本数据类型的默认值
Go 语言变量的数据类型基本数据类型的转换
Go 在不同数据类型变量之间赋值时需要显式转换。也就是说Golang中数据类型不能自动转换。

基本语法:
表达式T(v) 将值 v 转换为类型 T
T:就是数据类型,比如:int32、int64、float32等。
v:就是需要转换的变量。

数据类型转换细节说明:

  • Go中,数据类型的转换可以是从表示范围小的转换为表示范围大的,反过来也可以。
  • 被转换的是变量存储的数据(值),变量本身的数据类型并没有变化。
  • 在转换中,比如讲int64转换成int8,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样

基本数据类型和string的转换

  • 方式一:fmt.Sprintf("%参数", 表达式)
    1)、参数需要和表达式的数据类型匹配
    2)、fmt.Sprintf(),会返回转换后的字符串
  • 方式二:使用 strconv 包的函数

string专程基本数据类型

  • 使用 strconv 包的函数
  • 在将String类型转换成基本数据类型时,要确保String类型能够转成有效的数据,比如我们直接把“123”转成一个整数,但是不能把“hello”转成一个整数,如果这样做,Go直接将其转成0

2、派生 / 复杂数据类型
1)、指针

  • 基本数据类型,变量存的就是值,也叫值类型。
  • 获取变量的地址,用&,比如:var num int,获取num的地址:&num。
  • 指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值,比如:var ptr *int = &num
  • 获取指针类型所指向的值,使用:*, 比如:var *ptr int,使用 *ptr获取p指向的值。Go 语言变量的数据类型
    指针类型细节说明:
  • 值类型,都有对应的指针类型,形式为 *数据类型,比如 int 的指针就是 *int,float32对应的指针类型就是*float32,以此类推。
  • 值类型包括,基本数据类型int系列,float系列,bool,string,数组和结构体struct。

值类型和引用类型

  • 值类型:基本数据类型int系列、float系列、bool、string、数组、struct。
  • 引用类型:指针、slice切片、map、管道channel、interface等都是引用类型。

标识符的命名规范
Go 语言变量的数据类型
2)、数组

3)、结构体(struct)

4)、管道(channel)

5)、函数(也是一种类型)

6)、切片(slice)

7)、接口(interface)

8)、map