美文网首页
Golang学习笔记-1.4 数据类型

Golang学习笔记-1.4 数据类型

作者: xunk1900 | 来源:发表于2018-07-05 21:07 被阅读0次

    本文系第四篇Golang语言学习教程
    在Go语言中,数据类型用于声明函数和变量。
    Go语言按类别有以下几种数据分类

    序号 类型 描述
    1 bool bool类型表示一个布尔值,值为truefalse
    2 数字类型 整型int和浮点型float32、float64.Go支持整型和浮点型数字,并且原生支持复数。
    3 字符串类型 一串固定长度字符连接起来的序列,Go语言中字符串由单个字节连接起来,使用UTF-8编码标识Unicode文本。
    4 派生类型 包括:
    (a) 指针类型(Pointer)
    (b) 数组类型
    (c) 结构化类型(struct)
    (d) Channel 类型
    (e) 函数类型
    (f) 切片类型
    (g) 接口类型(interface)
    (h) Map 类型

    bool

    bool类型表示一个布尔值,值为truefalse
    例:

    package main 
    
    import . "fmt"
    
    func main(){
            a := true //定义 a为true
            b := false //定义 b为false
            Println("a is",a, "b is",b)
            c := a && b //c = a 和 b做与运算
            Println("c is",c)
            d := a || b //d = a 和 b做或运算 
            Println("d is",d)
    }
    

    以上程序运行结果如下:

    a is true b is false
    c is false
    d is true

    数字类型

    序号 类型和描述
    1 uint8
    无符号8位整型(0 - 255)
    2 uint16
    无符号16位整型(0 - 65535)
    3 uint32
    无符号32位整型(0 - 4294967295)
    4 uint64
    无符号64位整型(0 - 18446744073709551615)
    5 int8
    有符号8位整型(-128 - 127)
    6 int16
    有符号16位整型(-32768 - 32767)
    7 int32
    有符号整型32位(-2147483648 - 2147483647)
    8 int64
    有符号整型64位(-9223372036854775808 - 9223372036854775807)

    int:根据不同的底层平台(Underlying Platform),表示 32 或 64 位整型。除非对整型的大小有特定的需求,否则你通常应该使用 int 表示整型。
    大小:在 32 位系统下是 32 位,而在 64 位系统下是 64 位。

    例:

    package main
    
    import (
            "fmt"
            "unsafe"
    )
    
    func main(){
            a,b := 95,80 //给 a 和 b 赋值
            fmt.Println("values of a is",a, "values of b is",b)
            fmt.Printf("the type of a is %T,the size of a is %d\n",a, unsafe.Sizeof(a))  //输出 a 的类型和类型大小
            fmt.Printf("the type of b is %T,the size of b is %d\n",b, unsafe.Sizeof(b)) //输出 b 的类型和类型大小,\n换行
    }
    

    在 Printf 方法中,使用 %T 格式说明符(Format Specifier),可以打印出变量的类型。Go 的 unsafe 包提供了一个 Sizeof 函数,该函数接收变量并返回它的字节大小。unsafe 包应该小心使用,因为使用 unsafe 包可能会带来可移植性问题。不过出于本教程的目的,我们是可以使用的。

    上面程序会输出变量 a 和 b 的类型和大小。格式说明符 %T 用于打印类型,而 %d 用于打印字节大小。

    以上程序运行结果如下:

    values of a is 95 values of b is 80
    the type of a is int,the size of a is 8
    the type of b is int,the size of b is 8

    从上面的输出,我们可以推断出 a 和 b 为 int 类型,且大小都是 64 位(8 字节)。

    浮点型

    package main
    
    import "fmt"
    
    func main(){
            a,b := 11.5,55.98 //自动推断 a, b 的类型
            fmt.Printf("Type of is a is %T, type of b is %T\n",a,b) //输出 a, b 的类型
            sum := a+b //将a+b赋值给sum
            diff := a-b //将a-b赋值给diff
            fmt.Println("sum",sum, "diff",diff) //输出sum、diff
    }
    

    以上程序简单演示了浮点型的运用。
    运行结果如下:

    Type of is a is float64, type of b is float64
    sum 67.47999999999999 diff -44.48

    复数类型

    Go语言提供了两种精度的复数类型:complex64和complex128,分别对应float32和float64两种浮点数精度。
    内置的complex函数用于构建复数,内建的real和imag函数分别返回复数的实数和虚数。
    例:

    package main
    
    import  "fmt" 
    
    func get_real_imag() {
            value4 := 1.2 + 10i
            var r = real(value4) //返回复数的实部: 1.2
            var i = imag(value4) //返回复数的虚部: 10
            fmt.Println("the real is",r, "and the imag is",i)
    }
    
    func main() {
            get_real_imag()
    }
    

    以上运行结果如下:

    the real is 1.2 and the imag is 10

    类型转换

    Go 有着非常严格的强类型特征。Go 没有自动类型提升或类型转换。
    例:

    package main
      
    import "fmt"
    
    func main(){
            i := 1 // i 的类型为int
            j := 5.5  // j 的类型为float64
            sum := i + j //赋值sum为 i + j
            fmt.Println(sum)
    }
    

    以上程序会报错:

    i + j (mismatched types int and float64)

    试图将两个不同类型的数相加是不行的,所以需要将 i 转换成float64类型
    例:

    package main
      
    import "fmt"
    
    func main(){
            i := 1 // i 的类型为int
            j := 5.5  // j 的类型为float64
            sum := float64(i) + j //赋值sum为 i + j,转换 i 的类型为float64
            fmt.Println(sum)
    }
    

    以上运行结果如下:

    6.5

    注意:本例中将 i 转换为float64,运算正常。若将 j 转换为int整数类型,则 j 变成整数,输出结果为 6。

    字符串类型(string)

    在Golang中,字符串是字节的集合。
    例:

    package main
      
    import "fmt"
    
    func main(){
            first := "Hello,everyone!" //first 赋值
            second := "This is ergouzi's Mac " //second 赋值
            all := first + " " + second // + 操作符用于拼接字符,将first、空格、second拼接在一起赋值给all
            fmt.Println(all)
    }
    

    以上运行结果如下:

    Hello,everyone! This is ergouzi's Mac

    以上为学习Golang数据类型篇

    相关文章

      网友评论

          本文标题:Golang学习笔记-1.4 数据类型

          本文链接:https://www.haomeiwen.com/subject/qpeduftx.html