文章目录
一、数据类型的基本介绍
1.1、整数类型
基本介绍
- 简单的说,就是用于存放整数值的,比如 0, -1, 2345 等等
1.2、小数类型/浮点型
基本介绍
- 小数类型就是用于存放小数的,比如 1.2 0.23 -1.911
说明:float64 的精度比 float32 的要准确.
说明:如果我们要保存一个精度高的数,则应该选用 float64
1.3、浮点型使用细节
1、Golang 浮点类型有固定的范围和字段长度,不受具体 OS(操作系统)的影响。
2、 Golang 的浮点型默认声明为 float64 类型。
1.4、字符类型
基本介绍
- Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存。
字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。也
就是说对于传统的字符串是由字符组成的,而 Go 的字符串不同,它是由字节组成的
1.4.1、当我们直接输出byte的值,就是输出了对应的字符的ascll码值
//输出字节类型如果是字母的话就是ascll码
// 当我们直接输出byte的值,就是输出了对应的字符的ascll码值
var c1 byte = 'l' //小写的l
var c2 byte = 'a' //小写的a
fmt.Println("c1 =", c1) // 108
fmt.Println("c2=", c2) // 97
fmt.Println("=", c1)
格式化输出要使用 fmt.Printf()方法
var c1 byte = 'l' //小写的l
var c2 byte = 'a' //小写的a
// fmt.Println("c1 =", c1) // 108
// fmt.Println("c2=", c2) // 97
// fmt.Println("=", c1)
//如果我们希望输出对应的字符,需要使用格式化输出
fmt.Printf("c1=%c c2=%c\n", c1, c2) // c1=l c2=a
上面的说明
1、如果我们保存的字符在 ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到 byte
2、如果我们保存的字符对应码值大于 255,这时我们可以考虑使用 int 类型保存
3、如果我们需要安装字符的方式输出,这时我们需要格式化输出,即 fmt.Printf(“%c”, c1)..
1.5、布尔类型
1、布尔类型也叫 bool 类型,bool 类型数据只允许取值 true 和 false
2、bool 类型占 1 个字节。
3、bool 类型适于逻辑运算,一般用于程序流程控制
if 条件控制语句;
for 循环控制语句
1.6、string 类型
1.6.1、基本介绍
- 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go
语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本
var name string = "我是老王"
fmt.Println(name)
1.6.2、string 使用注意事项和细节
- 1、Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本,这样 Golang 统一使用 UTF-8 编码,中文
乱码问题不会再困扰程序员。 - 2、字符串一旦赋值了,字符串就不能修改了:在 Go 中字符串是不可变的
var name string = "我是老王"
fmt.Println(name)
var name1 string = "我是一个测试数据" // 我是一个测试数据
// name1[0] = "她" // 不可以,因为go的string中的数据一旦被定义不可以修改,除非修改这个字符串的赋值
fmt.Println(name1)
name = "我是修改后的测试数据"
fmt.Println(name) // 我是修改后的测试数据
1.6.3、字符串的两种表示形式
- 1、双引号, 会识别转义字符
- 2、反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
var str1 string = "abc\nde"
fmt.Println(str1) // abc
// de
var str2 string = `我是一个不识别换\n行符的`
fmt.Println(str2) //我是一个不识别换\n行符的
1.6.4、字符串拼接方式
var name_one string = "俺是"
var name_two string = "老王头"
fmt.Println(name_one + name_two) //俺是老王头
1.7、打印元素的类型
- 格式 : fmt.Printf(“%T”, 元素)
name := "老王头"
fmt.Printf("%T", name) //string
age := 16
fmt.Printf("%T", age) // int
二、基本数据类型的默认值
- 在 go 中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在 go 中,默认值
又叫零值
2.1 基本数据类型的默认值如下
2.2 、基本数据类型的相互转换
- Golang 和 java / c 不同,Go 在不同类型的变量之间赋值时需要显式转换。也就是说 Golang 中数
据类型不能自动转换
2.2.1 、基本语法
表达式 T(v) 将值 v 转换为类型 T
T: 就是数据类型,比如 int32,int64,float32 等等
v: 就是需要转换的变量
注意事项
1、Go 中,数据类型的转换可以是从 表示范围小-->表示范围大,也可以 范围大--->范围小
2、被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
3、在转换中,比如将 int64 转成 int8 【-128---127】 ,编译时不会报错,只是转换的结果是按
溢出处理,和我们希望的结果不一样。 因此在转换时,需要考虑范围
var n1 int32 = 12
var n2 int64
var n3 int8
n2 = int64(n1) + 10
n3 = int8(n1) - 4
fmt.Println(n1) // 12
fmt.Println(n2) // 22
fmt.Println(n3) // 8
2.2.2、 基本类型转 string 类型
2.2.1 、fmt.Sprintf(“%参数”, 表达式)
fmt.Sprintf(“%参数”, 表达式)
fmt.Sprintf()… 会返回转换后的字符串
var num1 int = 90
var num2 float64 = 23.456
b := true
mychar := 'h'
var str string
str = fmt.Sprintf("%d", num1)
fmt.Printf("str type %T str=%q\n", str, str) //str type string str="90"
str = fmt.Sprintf("%f", num2)
fmt.Printf("str type %T str = %q\n", str, str) // str type string str = "23.456000"
str = fmt.Sprintf("%t", b)
fmt.Printf("str type %T str = %q\n", str, str) // str type string str = "true"
str = fmt.Sprintf("%c", mychar)
fmt.Printf("str type %T str = %q\n", str, str) //str type string str = "104"
2.2.2 、 使用 strconv 包的函数
三、注意点
1、go区分大小写 在 golang 中,num 和 Num 是两个不同的变量
2、 包名:保持 package 的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,不要和
标准库不要冲突 fmt
3、变量名、函数名、常量名:采用驼峰法 eg: var stuName string = “tom” 形式: xxxYyyyyZzzz ...
4、如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能
在本包中使用 ( 注:可以简单的理解成,首字母大写是公开的,首字母小写是私有的) ,在 golang 没有
public , private 等关键字