Go基础语法极速版(二)——续看基本类型
rune 类型
在Go语言中,rune类型用于表示Unicode字符。尽管直观上可以将它理解为字符,但rune不同于byte类型。事实上,rune是int32类型,占用四个字节的存储空间。与其他许多编程语言不同,Go语言没有char类型,而是使用rune类型来表示字符。
// 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
rune类型在处理Unicode字符时非常有用。由于Unicode字符可以包含各种语言的字符、符号和表情符号,它们通常需要使用更多的存储空间来表示。使用rune类型可以确保能够正确地处理这些字符,而不会丢失信息或产生错误的结果。当然,在实际生产场景种,它并不常用。
bool, int, uint, float 家族
在Go语言中,有几种基本的数据类型,包括bool(布尔型)、int(整型)、uint(无符号整型)和float(浮点型)。下面将分别介绍这些数据类型及其家族的成员。
-
bool(布尔型): 布尔型在Go中只有两个可能的值:true(真)和false(假)。布尔型用于表示逻辑值,通常用于条件判断和控制流程。例如:
var isTrue bool = true var isFalse bool = false if isTrue { fmt.Println("This will be printed.") } if !isFalse { fmt.Println("This will also be printed.") }
-
int(整型): 整型家族包括多种大小的有符号整数类型,包括int8、int16、int32、int64和int。这些类型表示不同范围内的整数值,以及正负号。例如:
var num int = 42 var num8 int8 = -128 var num64 int64 = 9223372036854775807 fmt.Println(num) // 输出: 42 fmt.Println(num8) // 输出: -128 fmt.Println(num64) // 输出: 9223372036854775807
-
uint(无符号整型): 无符号整型家族与有符号整型家族类似,但只表示非负整数。它包括uint8、uint16、uint32、uint64和uint。这些类型用于表示非负整数值。例如:
var positiveNum uint = 100 var num32 uint32 = 4294967295 fmt.Println(positiveNum) // 输出: 100 fmt.Println(num32) // 输出: 4294967295
-
float(浮点型)家族: 浮点型家族包括两种类型:float32(单精度浮点数)和float64(双精度浮点数)。这些类型用于表示带有小数部分的数值。例如:
var numFloat32 float32 = 3.14 var numFloat64 float64 = 3.141592653589793 fmt.Println(numFloat32) // 输出: 3.14 fmt.Println(numFloat64) // 输出: 3.141592653589793
这些基本数据类型在Go语言中用于存储和操作不同类型的数据。它们提供了不同的精度和范围,可以根据需要选择合适的类型来存储数据。这些并不需要死记硬背,主要依赖于 IDE 的提示。
byte 类型
在Go语言中,byte
类型本质上是uint8
类型,它表示一个字节的数据。在Go的标准库中,对byte
类型的操作主要集中在bytes
包中。
// 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
类型篇小结
Golang的数字类型具有明确的长度和符号标注,这使得在使用这些类型时更加清晰和准确。例如,可以使用int8、int16、int32和int64等类型表示带符号整数,而uint8、uint16、uint32和uint64等类型表示无符号整数。通过明确指定长度和符号,可以更好地控制数据的范围和存储需求。
在Golang中,类型转换是需要显式进行的,不会隐式地发生。这意味着如果尝试在不同类型之间进行操作或赋值,代码将无法通过编译。例如,如果试图将一个整数与一个字符串拼接在一起,将会得到一个编译错误。这种严格的类型检查有助于避免潜在的错误,并提高代码的可靠性和可维护性。
Golang引入了一个特殊的类型叫做rune,它类似于其他语言中的char或character类型,表示一个Unicode字符。在大多数情况下,可以将rune理解为字符。rune类型的出现是为了更好地支持Unicode字符集,因为Unicode字符可能由多个字节组成,所以用一个byte类型无法完整表示。通过使用rune类型,可以确保正确处理Unicode字符,而不会导致字符截断或乱码的问题。
对于字符串操作,Golang提供了strings包,其中包含了许多用于处理字符串的常用函数。无论是拆分字符串、连接字符串、查找子串还是替换字符串等,strings包都提供了相应的函数。它是处理字符串时的一个有用工具集,可以帮助开发者简化字符串操作的代码,并提高效率。
总而言之,Golang在数字类型、类型转换、rune类型和字符串操作方面具有一些独特的特性。这些特性使得开发者能够更加精确地控制数据类型和操作,并提供了一些方便的工具和函数来处理字符串。这些特点有助于提高代码的可靠性、可读性和性能。
转载自:https://juejin.cn/post/7240427838344085559