我是靠谱客的博主 隐形铃铛,最近开发中收集的这篇文章主要介绍Go核心开发学习笔记(三) —— 基本数据类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

变量的数据类型:

  • 基本数据类型:

    • 整数型 {

      • int: 整形,32位操作系统占4字节,64位操作系统占8字节,
      • byte: 等于无符号的int8,
      • int8,int16,int32,int64: 8bit整型,16bit整型…(第一位01表示正负,所以int8只有7位表数值,所以数值范围-27~27-1),
      • uint8,uint16,uint32,uint64: 无符号8bit整型,无符号16bit整型(所以无符号不涉及正负,所以uint8为0~2^8-1),
      • rune: 等于int32
        }
    • 浮点型 {

      • float32: 单精度,
      • float64: 双精度,
        }
    • 字符型: 没有专门的字符型,例如char,varchar,没有!!,使用byte来保存单个字母字符,汉字无法使用byte类型,因为汉字都是3+bytes的

    • 布尔型bool: TRUE or FALSE

    • 字符串string: Go语言归属string为基本数据类型

    • 复数: complex64 complex128 (目前不常用)

  • 复杂数据类型:

  1. 指针pointer
  2. 数组array
  3. 结构体struct,替代class
  4. 管道channel
  5. 函数(也是一种函数类型)
  6. 切片slice
  7. 接口interface
  8. map(类似hashmap,set),比较简单不复杂,相当于别的语言中的map,仅有此。
  • 整数的使用细节:
  1. golang的整数类型分为int和uint,数值的范围不一样。
  2. 查看某个变量 数据类型和大小:
    package main
    import (
    "fmt"
    "unsafe"
    )
    func main() {
    /*
    printf用于做格式化输出,
    unsafe.Sizeof()函数:用于输出一个变量所占字节大小
    */
    var i = 100
    fmt.Printf("i的数据类型为: %Tn",i)
    fmt.Printf("i所占用的字节数为:%d",unsafe.Sizeof(i))
    }
    
  3. 因地制宜为变量赋予核实的数据类型,例如年龄,一般人不会超过255岁,所以var age byte 就可以了,没有必要为age赋一个int64,浪费了很多字节的变量。
    也被称作保小不保大原则,如果不确定数量就稍微用大一点,因为现在硬件能力已经不是当前计算机的瓶颈。
  • 浮点型的tips:
  1. 浮点型数据在计算机中存储分三部分:符号位,指数位,尾数位。
  2. 存储过程中,尾数部分可能丢失,造成精度损失。
  3. 双精度比单精度更加精确,一般约定俗成浮点数使用float64。
  4. Golang浮点类型有固定的范围和字段长度,不受OS影响,和int不一样,没有系统默认,只有float32和float64。
  5. Golang浮点型默认声明为float64。
  6. float形式一定要有小数点,例如0.123可以写为 num = .123。
  7. 支持科学计数法: num := 5.1234e(E)2 //其实就是512.34,e(E)X 为 10^X 次方,大小写e不影响科学计数法,X也可以为负数,x^-1即1/x。
  • 字符型的tips:
  1. 没有char和varchar概念,如果是单个字符,则ASCII,使用byte类型来表示所有单个字符,如果很多字符连在一起就是string: var c1 byte = ‘a’。

  2. Golang的字符串是由字节组成。

  3. 如果保存的字符在ASCII表,可以直接使用byte输出,直接输出为码值;使用printf %c输出为准确的ascii字符。

  4. 如果保存的字符大于255,使用int类型保存,例如查看汉字的码值,可以使用printf %d输出汉字的码值。

  5. 字符常量需要用’'括起来。

  6. Golang中,字符本质是一个整数,直接输出时,是该字符对应的utf-8编码的码值。

  7. 同理根据第6条,上述可以给某个变量直接赋值一个整数,格式化输出%c,则输出该数字对应的uni-code字符。

  8. 根据6,7条,则可以判定,字符是可以运算的,通过这种字符码值相加方式,将和格式化输出为%c,则会出现新的uni-code字符。
    举例:

    package main
    import "fmt"
    func main() {
    //Golang里面没有字符类型数据,只能用byte表示,即ASCII代码.
    //如果单纯输出,则输出为码值,'a'=97,不会输出字符a,而'9'=57
    var c1 byte = 'a'
    var c2 byte = '9'
    fmt.Println(c1,c2)
    //如果我们希望正确输出字符,则需要格式化输出
    fmt.Printf("c1=%ctc2=%cn",c1,c2)
    //如果输出汉字,那么byte内的汉字可以输出,而超过255则不可以再使用byte作为数据类型
    //var c3 byte = '赵'
    //fmt.Printf("c3=%c",c3)
    //上述是行不通的,赵已经超越了byte的最大值溢出了,所以需要int类型
    var c3 int = '赵'
    fmt.Printf("c3=%dn",c3)
    var c4 int = 10 + 'b'
    fmt.Printf("c4=%c",c4)
    //c4的结果为1
    }
    

9.字符型存储到计算机中,需要将字符对应的码值(整数)找出来。
存储: 字符–>找到对应码值–>转换为二进制–>存储
读取: 读取二进制–>对应码值–>转换为字符–>读取

字符和码值都是事先规定好的,不可以修改。
10. Go语言的编码都统一成utf-8,不再涉及gbk,gb2312,不会再出现乱码问题。

布尔型bool的tips:

  1. 只有两个值:True和False,不可以取什么空值。
  2. 布尔型占用一个字节,使用unsafe.Sizeof()查看变量大小。
  3. 主要用于逻辑运算,一般用于流程控制,if,for等。

字符串型string的tips:

  1. 很多的字符拼接到一起当做字符串,Golang语言字符串是众多字符连接起来的字符序列。
  2. 使用UTF-8编码表示unicode文本,乱码不再是问题。
  3. Golang字符串是不可变的。
  4. 字符串两种表现形式:
    双引号:"" 会识别转义字符,例如n就是会换行,不会输出n这种字符串效果
    反引号:`` 原生输出所有字符,转义字符失效,类似python中 var1=r’’
    package main
    import "fmt"
    func main() {
    //创建字符串,打印字符串
    var add string = "shit aaa!"
    fmt.Println(add)
    //Go中字符串不可变
    //var add1 string = "damn!"
    //add1[0] = 'a'
    //fmt.Println(add1)
    //这种切片改变字符串的方式不可以
    //字符串两种表现形式
    //双引号:"" 会识别转义字符,例如n就是会换行,不会输出n这种字符串效果
    //反引号:`` 原生输出所有字符,转义字符失效,类似python中 var1=r''
    s1,s2 := "abcnabcn",`abctabc`
    fmt.Println(s1,s2)
    //s1是abc换行abc, s2就是abctabc
    }
    
  5. 字符串拼接方式:
    一般使用+拼接即可。
    多行拼接+一定要留在行尾,再开启下一行,不然会报错.
    `
    基本数据类型默认值一览:
    整型 0
    浮点 0
    字符串 “”
    布尔 false
    package main
    import "fmt"
    func main() {
    var a int
    //0
    var b int32
    //0
    var c int64
    //0
    var d bool
    //false
    var e string
    //""
    var f float32
    //0
    var g float64
    //0
    fmt.Println(a,b,c,d,e,f,g)
    //printf中%v表示按照变量值输出
    }
    

最后

以上就是隐形铃铛为你收集整理的Go核心开发学习笔记(三) —— 基本数据类型的全部内容,希望文章能够帮你解决Go核心开发学习笔记(三) —— 基本数据类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部