Golang 菜鸟教程

Golang 控制语句

Golang 函数 & 方法

Golang 结构体

Golang 切片 & 数组

Golang 字符串(String)

Golang 指针

Golang 接口

Golang 并发

Golang 异常(Error)

Golang 其他杂项

Go 语言数据类型

数据类型指定有效的Go变量可以保存的数据类型。在Go语言中,类型分为以下四类:

  1. 基本类型:数字,字符串和布尔值属于此类别。

  2. 聚合类型:数组和结构属于此类别。

  3. 引用类型:指针,切片,map集合,函数和Channel属于此类别。

  4. 接口类型

在这里,我们将讨论Go语言的基本数据类型。在基本数据类型被进一步划分为三个子类别分别是:

  • Numbers

  • Booleans

  • Strings

数字类型

在Go语言中,数字分为三个子类别:

  • 整数:在Go语言中,有符号和无符号整数都可以使用四种不同的大小,如下表所示。有符号的int由int表示,而无符号的整数由uint表示。

    数据类型描述
    int88位有符号整数
    int1616位有符号整数
    int3232位有符号整数
    int6464位有符号整数
    uint88位无符号整数
    uint1616位无符号整数
    uint3232位无符号整数
    uint6464位无符号整数
    intin和uint都包含相同的大小,无论是32位还是64位。
    uintin和uint都包含相同的大小,无论是32位还是64位。
    rune它是int32的同义词,也表示Unicode代码点。
    byte它是int8的同义词。
    uintptr它是无符号整数类型。它的宽度未定义,但是可以容纳指针值的所有位。
    // 使用整数 
    package main  
    import "fmt"
             
    func main() { 
          
        // 使用8位无符号整型
        var X uint8 = 225 
        fmt.Println(X+1, X) 
          
        // 使用16位有符号整型
        var Y int16 = 32767 
        fmt.Println(Y+2, Y-2)  
    }

    输出:

    226 225
    -32767 32765
  • 浮点数:在Go语言,浮点数被分成2类如示于下表:

    数据类型描述
    float3232位IEEE 754浮点数
    float6464位IEEE 754浮点数
    // 浮点数的使用 
    package main  
    import "fmt"
             
    func main() { 
        a := 20.45 
        b := 34.89 
          
        //两个浮点数相减
        c := b-a 
          
        //显示结果 
        fmt.Printf("结果: %f", c) 
          
        //显示c变量的类型
        fmt.Printf("\nc的类型是 : %T", c)   
    }

    输出:

    结果: 14.440000
    c的类型是: float64
  • 复数:将复数分为两部分,如下表所示。float32和float64也是这些复数的一部分。内建函数从它的虚部和实部创建一个复数,内建虚部和实部函数提取这些部分。

    数据类型描述
    complex64包含float32作为实数和虚数分量的复数。
    complex128包含float64作为实数和虚数分量的复数。
    //复数的使用 
    package main 
    import "fmt"
      
    func main() { 
          
       var a complex128 = complex(6, 2) 
       var b complex64 = complex(9, 2) 
       fmt.Println(a) 
       fmt.Println(b) 
         
       //显示类型 
      fmt.Printf("a的类型是 %T 以及"+ "b的类型是 %T", a, b) 
    }

    输出:

    (6+2i)
    (9+2i)
    a的类型是 complex128 以及b的类型是 complex64

布尔类型

布尔数据类型仅表示true或false。布尔类型的值不会隐式或显式转换为任何其他类型。

//布尔值的使用
package main

import "fmt"

func main() {

    //变量
    str1 := "cainiaojc"
    str2 := "cainiaojc"
    str3 := "cainiaojc"
    result1 := str1 == str2
    result2 := str1 == str3

    //打印结果
    fmt.Println(result1)
    fmt.Println(result2)

    //显示result1和result2的类型
    fmt.Printf("result1 的类型是 %T , "+"result2的类型是 %T", result1, result2)

}

输出:

true
true
result1 的类型是 bool , result2的类型是 bool

字符串类型

字符串数据类型表示Unicode代码点的序列。换句话说,我们可以说一个字符串是不可变字节的序列,这意味着一旦创建了一个字符串,您就无法更改该字符串。字符串可以包含任意数据,包括以人类可读形式包含零值的字节。

//使用字符串
package main 
import "fmt"
  
func main() { 
      
    //用于存储字符串的str变量
   str := "cainiaojc"
     
   //显示字符串的长度
   fmt.Printf("字符串的长度:%d", len(str)) 
     
   //显示字符串 
   fmt.Printf("\n字符串是: %s", str) 
     
   // 显示str变量的类型
   fmt.Printf("\nstr的类型是: %T", str) 
}

输出:

字符串的长度:5
字符串是: cainiaojc
str的类型是: string