zoukankan      html  css  js  c++  java
  • Go语言之数据类型(一)

    一、数据类型分类

    二、基本数据类型

    基本数据类型包含数值型、字符型、布尔型以及字符串,下面说明每种类型的用法。

    (一)数值型

    1、整数类型

    整数类型就是用于存放整数值的。

    • 类型一览
    类型 有无符号 占用存储空间 表数范围
    int

    32位系统4字节

    64位系统8字节

    -231~231-1
    int8 1字节 -128~127
    int16 2字节 -215~215-1
    int32 4字节 -231~231-1
    int64 8字节 -263~263-1
    rune 与int32一样 -231~231-1
    uint

    32位系统4字节

    64位系统8字节

    0~232-1

    0-264-1

    uint8 1字节 0~255
    uint16 2字节 0~216-1
    uint32 4字节 0~232-1
    uint64 8字节 0~264-1
    byte 与uint8等价 0~255

    可以看出有无符号的区别是数的表示范围不一样。

    • 使用
    package main
    import "fmt"
    
    func main() {
    
        //有符号int8
        var i int8 = 127
        fmt.Println("i=",i)
    
        //无符号int8
        var j uint8 = 250
        fmt.Println("j=",j)
    
    }

    执行结果为:

    PS D:go_projectsrcgo_tutorialday02int_1> go run .main.go
    i= 127
    j= 250
    • 注意事项

    (1)go语言中有符号与无符号表示数的范围不同,int与uint的范围与操作系统有关

    (2)整型默认声明类型为int

    package main
    import (
        "fmt"
        "unsafe"
    )
    
    func main() {
        var a = 10
    
        // 查看默认类型
        fmt.Printf("a的类型为%T
    ", a) //a的类型为int
    
        // 查看a变量占用的字节的大小
        fmt.Printf("a占用的字节大小%d", unsafe.Sizeof(a)) //a占用的字节大小8
    }

    2、浮点类型

     浮点数类型就是用来存放小数类型的。

    • 类型一览
    类型 有无符号 占用存储空间 表数范围
    float32

    4字节

    -3.403E38~3.403E38
    float64 8字节 -1.798E308~1.798E308
    • 使用
    package main 
    
    import "fmt"
    
    func main() {
        // 浮点数在Go中的使用
        var a float32 = -0.369
        var b float64 = -0625
    
        fmt.Println("a=", a, "b=", b) //a= -0.369 b= -405
    
        // 尾数可能造成精度的丢失
        var c float32 = -203.50000006
        var d float64 = -203.50000006
        fmt.Println("c=", c, "d=", d) //c= -203.5 d= -203.50000006
    
        // Go中默认浮点型存储类型为float64
        var e = 0.236
        fmt.Printf("e的类型为%T", e) // e的类型为float64
    }
    • 注意事项

    (1)浮点型存储由三部分构成 符号位+指数位+尾数位

    (2)尾数位可能会造成精度的丢失,因此为了更加准确的存储精度高的数建议使用float64

    (3)浮点数的默认类型位float64

    (二)字符型

    Go中没有专门的字符类型,如果存储单个字符类型,使用byte来实现。

    1、使用

    package main
    
    import "fmt"
    
    func main() {
    
        //1、使用byte来存储字符类型,值使用单引号('value')来表示,直接输出byte值就是输出对应的字符码值
        var a = '0'
        var b = 'h'
        fmt.Println("a=", a, "b=", b) //a= 48 b= 104
    
        //2、如果输出对应的字符,需要格式化输出
        fmt.Printf("a=%c b=%c
    ", a, b) //a=0 b=h
    
        //3、byte类型的表数范围是0~255,如果存储的字符码值大于这个,可以使用int类型
        //var c byte = '张' //constant 24352 overflows byte
        var c int ='张'
        fmt.Println("c=", c) //c= 24352
    
        //4、如果给一个码值,按照格式化输出可以输出一个unicode字符
        var d int = 24352
        fmt.Printf("d=%c
    ", d) //d=张
    
        //5、字符类型可以运算
        var e = 'm' + 10
        fmt.Println("e=", e) //e= 119
    
    }

    2、注意事项

    • 如果保存的字符在ASCII表中,如a-z,0-9等,可以直接保存在byte中
    • 如果保存的字符码值大于255,需要考虑使用int类型保存
    • 如果需要输出字符本身,需要使用格式化输出
    • 字符的本质是一个整数,所以直接输出byte会输出一个整数码值

    3、字符本质探讨

    • 字符的存储与读取
    存储:字符--》码值--》二进制--》存储
    读取:二进制--》码值--》字符--》读取
    • 字符码值关系

    字符与码值是通过字符编码表已经规定好的,是不能改变的。

    (三)布尔类型

     布尔类型也叫bool类型,它只允许取值true或者false。bool类型占1字节空间大小,一般用于各种逻辑运算中。

    package main
    
    import (
        "fmt"
        "unsafe"
    )
    
    func main() {
    
        // 基本使用
        var a = false
        fmt.Println("a=", a) //a= false
    
        // 占用字节
        fmt.Println("a占用的字节大小为", unsafe.Sizeof(a)) //a占用的字节大小为 1
    
    }

    (四)字符串

    字符串就是一串固定长度的字符连接起来的字符序列。Go语言中的字符串是由单个字节连接起来的。

    1、使用

    package main
    
    import "fmt"
    
    func main() {
        // 1、string基本使用
        var a = "hello world!"
        fmt.Println(a)
    
        // 2、Go中的字符串是不可变的
        // a[0] = 'k' // cannot assign to a[0] (strings are immutable)
        // fmt.Println(a)    
    
        // 3、字符串中转义字符使用
        b := "aaa
    bbb"
        fmt.Println(b)
    
        // 4、反引号``,以字符串原生形式输出
        c := `
          func main() {
    
          }
        `
        fmt.Println(c)
        
        // 5、字符串拼接
        d := "hello" + "world"
        fmt.Println(d)
    
        // 6、字符串多行处理
        // 字符串分行,保留 + 到上一行
        e := "hello" +
        "world"
        fmt.Println(e)
    }

    2、注意事项

    • Go语言中字符串的字节使用utf8编码
    • 字符串一旦定义声明赋值了,就不能修改了
    • 如果需要输出原生代码,可以使用反引号
    • 可以通过”+“进行字符串拼接,如果字符串太长换行,需要将”+“保留在上一行,因为Go中每一行代码结束后会自动加上 ; 结束符
    作者:iveBoy
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    element-ui el-tree竖向滚动条和横向滚动条问题
    菜单加滚动条相关样式
    echarts tree 树图总结,点击父节点动态生成子节点,树图数据过多高度自适应,点击子节点跳转页面。
    基于Mininet测量路径的损耗率
    RyuBook1.0案例一:Switching Hub项目源码分析
    深度学习之稠密连接⽹络(DENSENET)
    图形学之图像信号处理
    图形学之卷积滤波器
    图形学之信号处理
    Lecture13_光线追踪1(Whitted-Style Ray Tracing)_GAMES101 课堂笔记
  • 原文地址:https://www.cnblogs.com/shenjianping/p/15149438.html
Copyright © 2011-2022 走看看