Go语言学习(二)-- 基本数据类型

目录

 1 Go语言命名规则

 2 基本数据类型

2.1 布尔型

2.2 整型

2.3 浮点型

2.4 字符

2.5 字符串

 2.6 字符串拼接方式"+"

3 类型转换


数据类型表示数据在内存中开辟的空间大小的别称。

Go 语言中数据类型可以分为: 基本数据类型 派生数据类型

 1 Go语言命名规则

命名规则 
  • 允许使用字母、数字、下划线
  • 不允许使用Go语言关键字
  • 不允许使用数字开头
  • 区分大小写
  • 见名知义 (规范而非准则)
驼峰命名法
  • 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始,第二个单词的首字母大写,例如:myNamedogAge
  • 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstNameLastName

 2 基本数据类型

Go 语言数据类型分为五种:
  • 布尔类型
  • 整型类型
  • 浮点类型
  • 字符类型
  • 字符串类型

2.1 布尔型

  • 布尔类型也叫做bool类型,bool类型数据只允许取值truefalse
  • bool类型占1个字节
  • bool类型适用于逻辑运算,一般用于流程控制

 

2.2 整型

  • 整型数据分为两类,有符号和无符号两种类型  
  1. 有符号: int, int8, int16, int32, int64
  2. 无符号: uint, uint8, uint16, uint32, uint64, byte
  3. 不同位数的整型区别在于能保存整型数字范围的大小
  4. 有符号类型可以存储任何整数,无符号类型只能存储自然数
  5. intuint的大小和系统有关,32位系统表示int32uint32,如果是64位系统则表示int64uint64
func main() {
	var flag = true
	fmt.Print(flag)

	var num1 int = 1
	var num2 int32 = 123
	fmt.Printf("%d,%d\n", num1, num2)

	//无符号数就是在存储的时候没有符号位
	/*var num3 uint = -11
	fmt.Println(num3) */ //cannot use -11 (untyped int constant) as uint value in variable declaration (overflows)

	fmt.Printf("%T,%T\n", num1, num2) //输出变量类型
	println(unsafe.Sizeof(num1))      //查看变量占用字节  8
	println(unsafe.Sizeof(num2))      //查看变量占用字节   4

}
  • 十进制整数,使用0-9的数字表示且不以0开头
  • 八进制整数,以0开头,0-7的数字表示
  • 十六进制整数,以0X或者是0x开头,0-9|A-F|a-f组成
func main() {
	//十进制整数,使用0-9的数字表示且不以0开头
	var num1 = 123
	fmt.Println(num1)
	//八进制整数,以0开头,0-7的数字表示
	var num2 = 0712
	fmt.Println(num2) //458
	fmt.Printf("%o",num2) //表示以八进制方式输出num2 712
	//十六进制整数,以0X或者是0x开头,0-9|A-F|a-f组成
	num := 0x22ff
	fmt.Printf("%x",num) //十六进制小写输出num
}

2.3 浮点型

  • 浮点数由整数部分、小数点和小数部分组成,整数部分和小数部分可以隐藏其中一种。也可以使用科学计数法表示
  • 尾数部分可能丢失,造成精度损失
  • float64的精度要比float32的要准确
func main() {
	var f1 = 1.2345678
	fmt.Println(f1)
	fmt.Printf("%.6f\n", f1)

	//能否用浮点数来比较是否相等 在这里是可以的 还没有出现误差
	var f2 = 1.2345678
	if f1 == f2 {
		fmt.Println("相等")
	}
}

2.4 字符

  • Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存
  • 字符只能被单引号包裹,不能用双引号,双引号包裹的是字符串
  • 字符使用UTF-8编码,英文字母占一个字符,汉字占三个字符
  • 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符
  • 字符类型是可以运算的,相当于一个整数,因为它们都有对应的unicode
  • 但是如果我们保存的字符大于 255 ,比如存储汉字,这时 byte 类型就无法保存,可以使用rune 类型保存
func main() {

	/*	// byte is an alias for uint8 and is equivalent to uint8 in all ways. It is
		// used, by convention, to distinguish byte values from 8-bit unsigned
		// integer values.
		type byte = uint8

		// rune is an alias for int32 and is equivalent to int32 in all ways. It is
		// used, by convention, to distinguish character values from integer values.
		type rune = int32*/
	var char byte = '1'
	// var c byte = '哎'//err
	fmt.Println(char)
	char1 := '中'
	fmt.Print(char1) //20013
	var char2 rune = '国'
	fmt.Println(char2)
	fmt.Printf("%c\n", char2) //国
}

2.5 字符串

  • 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本
  • 字符串一旦赋值了,就不能修改了:Go中字符串是不可变的
  • 字符串的两种标识形式
双引号,会识别转义字符
	var str = "123\nabc" //输出时会换行
	fmt.Println(str)

反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
	var str2 = `123\nabc` //输出时原样输出,不会转义 
	fmt.Println(str2)

 2.6 字符串拼接方式"+"

	var str = "hello " + "world"
	str += "!"
	fmt.Println(str) //hello world!
  • 当一行字符串太长时,需要使用到多行字符串,可以使用如下处理,需要注意 + 必须在当前行的结尾

3 类型转换

数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。
两种不同的类型在计算时, Go 语言要求必须进行类型转换。
类型转换用于将一种数据类型的变量转换为另外一种类型的变量。
Go 语言类型转换基本格式如下:
数据类型 ( 变量 ) // 将变量转成指定的类型
数据类型 ( 表达式 ) //将表达式转成指定的类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小小小关同学

你的支持就是我的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值