Go(Golang)_02_数据类型
@
数据类型
Go中数据类型分为:基础类型、聚合类型、引用类型、接口类型
1)基础类型分为:数、布尔、字符串
2)聚合类型:数组、结构体
3)引用类型:slice、map、函数、通道
4)接口类型:对其他类型行为的概括和抽象
数
数:记录具体数值数据
1)Go中的数分为:整数、浮点数、复数
//对应的常用关键词为:int、float32、complex128
程序中数类型需注意事项:
1)浮点数转换位整数时,会舍弃其小数部分;
2)复数常量可和其他常量进行算术运算;
如:定义3中类型的数,并输出
1)编写程序;
2)运行结果;
布尔
布尔(bool):Go中仅存在两种状态的对象(true或false)
1)可通过一元操作符(!)取反对象的状态;
2)布尔值无法隐式转换为数值;
如:通过true和false影响函数的运行
1)编写程序;
2)运行结果;
字符串
字符串(string):数字、字母和特殊符号组成的一串字符(字符的有序集合)
1)支持运算符操作,但可能触发内存分配/拷贝;
2)可通过下标访问(从0开始,且空格也占位);
3)不可变的字节序列(无法直接修改);
string使用8比特字节的集合存储字符串
1)存储的内容是字符的UTF-8编码(常和[]byte类型互相转换);
2)字符串长度:Unicode编码所占的字节数(英文1,中文3);
3)字符串可为空,但不可为nil;
//string和[]byte的类型转换会触发次内存拷贝(建议使用[]byte)
通过下标访问格式:变量名[索引值1:索引值2]
1)若省略索引值1,则默认从0到索引值2(不包括);
2)若省略索引值2,则默认从索引值1到最后(包括);
3)若同时省略索引值1和索引值2,则默认包含字符串的所有字符;
//若省略“:”直接指定索引值,则默认显示该字符对应的ASCII码值
转义字符:使字符串中显示不能直接显示的字符
1)转义符通过“\”和一个可以显示的字符定义;
2)常用的转义字符如下:
转义字符 | 含义 |
---|---|
\a | 响铃(BEL) |
\b | 退格(BS) |
\f | 换页(FF) |
\n | 换行(LF) |
\r | 回车(CR) |
\t | 水平制表(HT) |
\v | 垂直制表(VT) |
\\ | 代表反斜杠(\)字符 |
引号需知:
1)使用反引号括住的内容,其输出形式和输入形式完全相同(无需转义);
2)当函数的参数类型是byte时,只能使用单引号括住字符;
如:通过下标访问输出字符串中特定子串,并输出该字符串的长度
1)编写程序;
package main
import (
"fmt"
)
func main() {
var str string = "Hello,World!A"
fmt.Println(str[:5])
fmt.Print(str[7:], "\n")
fmt.Println(str[:])
fmt.Println(str[len(str)-1])
fmt.Println(len(str))
}
2)运行结果;
类型声明
类型声明(命名类型):基于已有的类型创建新的类型
1)Go中没有类型的隐式转换,所以不同类型之间是不可进行算术运算;
2)两个使用相同底层类型的命名类型,不属于相同类型;
3)声明类型通常定义在包级别,且是公开的;
//通过基于函数定义的命名类型可实现函数记忆功能
命名类型的定义格式:type 新类型 底层类型
1)内置类型:数、布尔、字符串、数组、slice、map和函数(func);
2)自定义类型:结构体(struct)、接口(interface)、命名类型(type);
3)具有相同底层类型或都指向相同底层类型的指针类型,可相互转换;
//转换格式:转换类型(对象)
如:定义两个命名类型,尝试比较两者
1)编写程序;
2)运行结果;