Go--数据类型


一、数据类型的基本介绍

尚硅谷

1.1、整数类型

基本介绍

  • 简单的说,就是用于存放整数值的,比如 0, -1, 2345 等等
    * 简单的说,就是用于存放整数值的,比如 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 类型数据只允许取值 truefalse
2bool 类型占 1 个字节。
3bool 类型适于逻辑运算,一般用于程序流程控制
	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 包的函数

三、注意点

1go区分大小写 在 golang 中,num 和 Num 是两个不同的变量
2、 包名:保持 package 的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,不要和
标准库不要冲突 fmt
3、变量名、函数名、常量名:采用驼峰法 eg:  var stuName string = “tom” 形式: xxxYyyyyZzzz ...
4、如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能
在本包中使用 ( 注:可以简单的理解成,首字母大写是公开的,首字母小写是私有的) ,在 golang 没有
public , private 等关键字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lovely_red_scarf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值