golang基础学习——数据类型

整型

整型使用细节

  1. golang各整数类型分:有符号和无符号,int和uint的大小和系统有关。
  2. golang的整数默认声明为int型。
  3. 如何在程序中查看某个变量的字节大小和数据类型(使用较多)
package main
// import "fmt"
// import "unsafe"
// 可改写为以下形式
import (
	"fmt"
	"unsafe"
)
//golang中整数类型的使用
func main() {
	var n1 = 100
	//Printf()用于格式化输出
	fmt.Printf("n1的数据类型为%T \n", n1)

	//查看所占用的字节数
	var n2 int64 = 200
	fmt.Printf("n2 的数据类型为%T,所占用的字节数为%d", n2, unsafe.Sizeof(n2))
}
  1. golang程序中整型变量在使用时遵循保小不保大的原则,即:在保证程序正确运行下,尽量使用占用空间小的数据类型。
    例如:年龄一般不会超过200岁,可以使用byte数据类型,来减少占用空间。当不确定时可以大一点。
  2. bit:计算机中的最小存储单位。byte:计算机中基本存储单元。1byte = 8bit

浮点类型

基本介绍

golang的浮点类型可以表示一个小数,比如123.4,7.8,0.13等。

案例演示

package main
import (
	"fmt"
)
//golang中浮点类型的使用
func main() {
	var price float32 = 3155.67
	fmt.Println("薪水为:", price)
}

浮点类型分类

类型占用存储空间表数范围
双精度float648字节-1.79E+308 ~ +1.79E+308
单精度float324字节-3.40E+38 ~ +3.40E+38
  • 浮点数都是有符号的
  • 尾数部分可能丢失,造成精度损失
package main
import (
	"fmt"
)
//golang中浮点类型的使用
func main() {
	//尾数可能会丢失,出现精度损失
	var num1 float32 = -123.0000901
	var num2 float64 = -123.0000901
	fmt.Println("num1:", num1) //num1: -123.00009
	fmt.Println("num2:", num2) //num2: -123.0000901
}

float64的精度比float32更准确
如果要保存精度高的数,应该选用float64

浮点类型使用细节

  1. golang浮点类型有固定的范围和字段长度,不受具体OS的影响。
  2. golang的浮点类型默认声明为float64类型
  3. 浮点类型常量有两种表示形式
    十进制形式:如5.12 .512(必须有小数点)
    科学计数法形式:如:5.12345e2
  4. 通常情况下,应该使用float64,因为它更精确。

字符类型

基本介绍

golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。
字符串是一串固定长度的字符连接起来的字符序列。go的字符串是由单个字节连接起来的。也就是说传统的字符串由字符组成,而go的字符串不同,它是由字节组成的

案例演示

package main
import (
	"fmt"
)
//golang中字符类型的使用
func main() {
	var c1 byte = 'a'
	var c2 byte = '0'

	//当直接输出byte值时,就是输出了对应的字符的码值
	fmt.Println("c1:", c1, "c2:", c2) //c1: 97 c2: 48
	//如果要输出对应字符,需要使用格式化输出
	fmt.Printf("c1=%c c2=%c\n", c1, c2) //c1=a c2=0

	//var c3 byte = '男' //overflow溢出
	var c3 int = '男'
	fmt.Printf("c3=%c c3对应的码值:%d", c3, c3) //c3=男 c3对应的码值:30007
}
  1. 如果保存的字符在ASCII表中,可以直接保存到byte
  2. 如果字符对应的码值大于255,这时我们可以考虑使用int类型保存
  3. 如果需要按照字符的方式输出,我们需要格式化输出,即fmt.Printf(’%c’, )

字符类型的使用细节

  1. go语言字符使用UTF-8编码,英文字母占1个字节,汉字占3个字节。
  2. 在go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值。
  3. 可以直接给某个变量赋一个数字,然后按照格式化输出时%c 会输出该数字对应的unicode字符。
  4. 字符类型可以进行运算,相当于一个整数,都有对应的Unicode码。
    4和5案例:
package main
import (
	"fmt"
)
//golang中字符类型的使用
func main() {
	var c4 int = 22269      //22269 -> 国
	fmt.Printf("c4:%c", c4) //c4:国

	//字符类型是可以进行运算的,相当于一个整数,运算时按照码值进行
	var c5 byte = 10 + 'a' //10+97->107
	fmt.Println("c5:", c5) //5: 107
}

字符类型本质探讨

  1. 字符型存储到计算机中,需要将字符对应的码值(整数)找出来
    存储:字符-》对应码值-〉二进制-》存储
    读取:二进制-〉码值-》字符-〉读取
  2. 字符值和码值的对应关系都是通过字符编码决定的(规定好了)。
  3. go语言的编码都统一成utf-8,非常的方便,很同意,没有编码乱码的困扰。

布尔类型:bool

  1. 布尔类型也叫bool类型,bool类型数据只允许取值true和false
  2. bool类型占1个字节
  3. bool类型适用于逻辑运算,一般用于程序流程控制。
  • if条件控制语句
  • for循环控制语句
    案例演示:
package main
import (
	"fmt"
	"unsafe"
)
//golang中布尔类型的使用
func main() {
	var j bool = true
	fmt.Println("b:", j) //b: true

	//bool类型占用的存储空间为1个字节
	fmt.Printf("j占用的空间为:%d", unsafe.Sizeof(j)) //j占用的空间为:1

	//2.bool类型只能取true或者false
}

字符串类型:string

基本介绍

字符串就是一串固定长度的字符连接起来的字符序列。go的字符串是由单个字节连接起来的。go语言的字符串的字节使用utf-8编码标识Unicode文本。
基本使用

//golang中字符串类型的使用
func main() {
	var address string = "北京长城 110 hahah"
	fmt.Println(address) //北京长城 110 hahah
}

string注意事项和使用细节

  • 字符串一旦被赋值,字符串就不能修改了:在go中字符串是不可变的(字符串无法通过下标访问变量的值)
  • 字符串的两种表示形式
    (1)双引号,会识别转义字符
    (2)反引号,以字符串的原生的形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果。
    案例:
package main
import (
	"fmt"
)
//golang中字符串类型的使用
func main() {
	str2 := "abc\" hahah"
	fmt.Println(str2) //abc" hahah
	//使用反引号``
	str3 := `func main() {
		var price float32 = 3155.67
		fmt.Println("薪水为:", price)
	}
	`
	fmt.Println(str3)
}
  • 字符串拼接方式 +号,注意当拼接代码很长时,可以分行写,但是+ 要留在上一行末尾。
    案例:
//golang中字符串类型的使用
func main() {
	str5 := "hello" + "world"
	fmt.Println(str5) //helloworld

	str6 := str5 +
		"fight"
	fmt.Println(str6) //helloworldfight

	str7 := str6 
		+ "come"  //报错
}

基本数据类型默认值

基本介绍

在go中,数据类型都有一个默认值,当没有赋值时,就会保留默认值,在go中,默认值又叫零值。

数据类型默认值
整型0
浮点型0
字符型“” 空串
布尔值false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值