likes
comments
collection
share

Go基础语法极速版(二)——续看基本类型

作者站长头像
站长
· 阅读数 15

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(浮点型)。下面将分别介绍这些数据类型及其家族的成员。

  1. 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.")
    }
    
  2. 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
    
  3. uint(无符号整型): 无符号整型家族与有符号整型家族类似,但只表示非负整数。它包括uint8、uint16、uint32、uint64和uint。这些类型用于表示非负整数值。例如:

    var positiveNum uint = 100
    var num32 uint32 = 4294967295
    
    fmt.Println(positiveNum) // 输出: 100
    fmt.Println(num32)       // 输出: 4294967295
    
  4. 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

Go基础语法极速版(二)——续看基本类型

类型篇小结

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类型和字符串操作方面具有一些独特的特性。这些特性使得开发者能够更加精确地控制数据类型和操作,并提供了一些方便的工具和函数来处理字符串。这些特点有助于提高代码的可靠性、可读性和性能。