美文网首页
Go语言学习(4) - 基本数据类型

Go语言学习(4) - 基本数据类型

作者: 码咖 | 来源:发表于2018-11-26 21:53 被阅读0次

Go语言中的数据类型包含两种:

  • 基本数据类型(原生数据类型):整型、浮点型、布尔型、字符串、字符(byte、rune)
  • 复合数据类型(派生数据类型):指针(pointer)、数组(array)、切片(slice)、映射(map)、函数(function)、结构体(struct)、通道(channel)

整型

整型分为两大类

  • 按长度分:int8、int16、int32、int64、int
  • 无符号整型:uint8、uint16、uint32、uint64、uint

其中,uint8就是byte型、int16对应C语言中的short型、int64对应C语言中的long型

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

还有其他数字类型

序号 类型和描述
1 byte 类似 uint8
2 rune 类似int32
3 uint 32或者64位,根据电脑机器的位数决定
4 int 与uint一样大小
5 uintptr 无符号整型,用于存放一个指针

当超过数据类型所要求的长度时,就会报错:constant xxx overflows byte。

字符

下面看一下 byte 和 rune 到底是不是 我们上面描述的,分别 对应 uint8 和 int32,代码如下,我们还是打印出变量的类型 和 值:

package main
import "fmt"

func main() {

    a := 100
    var b byte = 100
    var c rune = 200

    fmt.Printf("%T %v \n", a , a)
    fmt.Printf("%T %v \n", b , b)
    fmt.Printf("%T %v \n", c , c)
}

输出结果如下:

int 100 
uint8 100 
int32 200 

事实证明,我们上面描述的是没有问题的。实际上,我们通常不会将 byte 和 rune 直接赋值为 数字类型,我们通常 赋值为 字符,类似于 Java 中的 char,如下:

    var e byte = 'a'
    var f rune = 'A'
    fmt.Printf("%T %v \n", e , e)
    fmt.Printf("%T %v \n", f , f)

输出结果如下:

uint8 97 
int32 65 

那么,byte 和 rune 有什么区别呢?我们先来看一个例子,假设 将 上面的 f 值 赋值为 汉字 大写的 一,那么 是怎么样的结果呢,然后将 e 的 值也赋值为 “一”,结果是什么呢?

我们会发现,将 f 赋值为 “一”,输出 为:int32 19968;将 e 赋值为 “一”,会报一个异常:constant 19968 overflows byte,这是因为 byte 即 uint8 的最大值 是 255,而 “一” 对应的值 为 19968,远远大于 uint8 的最大值。

byte 和 rune 的区别如下:

  • byte型:其实就是 uint8 的别名,代表了一个ASCLL 码的一个字符
  • rune型:其实就是 int32 ,代表了一个UTF-8字符,当需要处理中文等 unicode 字符集时就要用到 rune 类型

字符串

字符串在Go语言中是以基本数据类型出现的。

在Go语言中,字符串 即可以单行定义,又可以多行定义,单行定义 不需要阐述,下面我们介绍下定义多行字符串

  • 双引号书写字符串被称为字符串字面量,这种字面量不能跨行;
  • 多行字符串需要使用 “·” 反引号(位于Tab键上面的一个),多用于内嵌源码 和 内嵌数据;
  • 在反引号中的所有代码不会被编译器识别,而只是作为字符串的一部分

当我们想 将 一段代码作为 字符串输出的时候,我们 发现 要输出 就只能 调为一行,但Go语言给我们提供了 多行字符串,如下:

    temp := `
        a := 100
        var b byte = 256
        var c rune = 200

        fmt.Printf("%T %v \n", a , a)
        fmt.Printf("%T %v \n", b , b)
        fmt.Printf("%T %v \n", c , c)
    `
    fmt.Println(temp)

输出结果如下:

        a := 100
        var b byte = 256
        var c rune = 200

        fmt.Printf("%T %v \n", a , a)
        fmt.Printf("%T %v \n", b , b)
        fmt.Printf("%T %v \n", c , c)

这样就可以讲 我们拷贝的一段代码 原样输出。

以上主要讲解了 基本数据类型,后续 会继续讲解 派生数据类型。

欢迎关注我的公众号,第一时间接收文章推送~ 搜索公众号: 码咖 或者 扫描下方二维码:


qrcode_wx.jpg

相关文章

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • 02-Go语言常量和变量

    Go语言的数据类型 C语言的数据类型 Go语言的数据类型 Go语言各数据类型占用内存空间 Go语言中也可以使用si...

  • Go语言标准库之JSON编解码

    Go语言标准库之JSON编解码 基本的类型 Go语言中的数据类型和JSON的数据类型的关系 bool -> JSO...

  • Go语言标准库之JSON编解码

    Go语言标准库之JSON编解码 基本的类型 Go语言中的数据类型和JSON的数据类型的关系 bool -> JSO...

  • Go语言复合数据类型之数组

    在学习复合数据类型之前,我们得知道复合数据类型是由基本数据类型组合而成,和Java一样,Go语言也有基本数据类型,...

  • Go的基础知识

    go语言学习笔记 一. 基本结构,基本数据类型 1. 文件名、关键字与标识符 Go 的源文件以 .go 为后缀名存...

  • 《Go语言四十二章经》第二章 数据类型

    作者:李骁 在 Go 语言中,数据类型可用于参数和变量声明。 2.1 基本数据类型 Go 语言按类别有以下几种数据...

  • 04-Go语言常量和变量

    Go数据类型 C语言的数据类型image GO语言数据类型image GO数据类型占用的内存空间image 注意点...

  • Go基本数据类型_003

    Go基本数据类型 Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函...

  • Go语言学习(4) - 基本数据类型

    Go语言中的数据类型包含两种: 基本数据类型(原生数据类型):整型、浮点型、布尔型、字符串、字符(byte、run...

网友评论

      本文标题:Go语言学习(4) - 基本数据类型

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