• 换个语言学一下 Golang (3)——数据类型


    在 Go 编程语言中,数据类型用于声明函数和变量。

    数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

    Go 语言按类别有以下几种数据类型:

    序号类型和描述

    1

    布尔型

    布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。

    2

    数字类型

    整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。

    3

    字符串类型:

    字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。

    4

    派生类型:

    包括:

    • (a) 指针类型(Pointer)

    • (b) 数组类型

    • (c) 结构化类型(struct)

    • (d) Channel 类型

    • (e) 函数类型

    • (f) 切片类型

    • (g) 接口类型(interface)

    • (h) Map 类型

    一、布尔型

    在 Go 中,布尔值的类型为 bool,值是 true 或 false,默认为 false。

    //示例代码
    var isActive bool  // 全局变量声明
    var enabled, disabled = true, false  // 忽略类型的声明
    func test() {
        var available bool  // 一般声明
        valid := false      // 简短声明
        available = true    // 赋值操作
    }

    所能进行的操作如下:
    && and 与
    || or 或
    ! not 非

    任何空值(nil)或者零值(0, 0.0, "")都不能作为布尔型来直接判断

    package main
    import (
        "fmt"
    )
    func main() {
        var equal bool
        var a int = 10
        var b int = 20
        equal = (a == b)
        fmt.Println(equal)
    }

    错误的用法

    package main
    import (
        "fmt"
    )
    func main() {
        if 0 {
            fmt.Println("hello world")
        }
        if nil {
            fmt.Println("hello world")
        }
        if "" {
             fmt.Println("hello world")
        }
    }

    结果:

    二、数字类型

    Go 也有基于架构的类型,例如:int、uint 和 uintptr。

    序号类型和描述
    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)

    浮点型

    序号类型和描述
    1 float32
    IEEE-754 32位浮点型数
    2 float64
    IEEE-754 64位浮点型数
    3 complex64
    32 位实数和虚数
    4 complex128
    64 位实数和虚数

    其他数字类型

    以下列出了其他更多的数字类型:

    序号类型和描述
    1 byte
    类似 uint8
    2 rune
    类似 int32
    3 uint
    32 或 64 位
    4 int
    与 uint 一样大小
    5 uintptr
    无符号整型,用于存放一个指针

    go 1.9版本对于数字类型,无需定义int及float32、float64,系统会自动识别。

    package main
    import "fmt"
    
    func main() {
       var a = 1.5
       var b =2
       fmt.Println(a,b)
    }

    运行结果 

    1.5 2

    如果加上类型float,会出现如下结果

    # command-line-arguments
    ./int.go:4:10: undefined: float

     三、字符型

    字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。(对于汉字,通常由多个字节组成)。这就是说,传统的字符串是由字符组成的,而Go的字符串不同,是由字节组成的。这一点需要注意。

    字符串的表示很简单。用(双引号””)或者(``号)来描述。

    区别是,双引号之间的转义字符会被转义,而单引号号之间的转义字符保持原样不变。

    字符 " 可以用"代替

    基本操作:

      获取字符串长度:len(str)

      例如:

        str string = "你"

        fmt.Println(len(str))

        输出结果为:3 (因为Golang字符串是由字节构成的)

      要想计算中文的实际字符数可以使用unicode/utf8包的RuneCountInString函数。

      随机访问单个字符:str[i]

      字符串连接:str1 + str2

    示例:

    package main
    import (
        "fmt"
        "unicode/utf8"
    )
    func main() {
        var a = "hello 
     world"
        var b = `hello 
     world`
        var str string = ""
        fmt.Println(a)
        fmt.Println("----------")
        fmt.Println(b)
        fmt.Println(str)
        fmt.Println(len(str))//获取字符长度
        fmt.Println(str[0])//获取单个字节
        count := utf8.RuneCountInString("一起学习")//计算中文字符数
        fmt.Print(count) // 4
    }

     结果:

    这里我们看到str[0]得到的是228,这就证明了Go的字符串是由字节组成的

    其它的数据类型我们以后再探讨

     
  • 相关阅读:
    多路复用与设置阻塞、非阻塞模式
    ['\xef\xbb\xbf这个什么含义? PY技术开发交流区 乐讯手机高手
    fcntl使用 and_tt 博客园
    Linux 设备驱动 Edition 3Linux设备驱动第三版(中文版)
    CRT source Google 搜索
    BOM–字节序标记 永不放弃的地盘 博客频道 CSDN.NET
    在C语言中,unsigned char是什么类型?_百度知道
    The JR Concurrent Programming Language
    C语言:为什么用fprintf(stderr,"Error");比printf("Error");更好?
    bash
  • 原文地址:https://www.cnblogs.com/tianyamoon/p/11082816.html
Copyright © 2020-2023  润新知