美文网首页
Go核心语言编程 - 基本数据类型(2)

Go核心语言编程 - 基本数据类型(2)

作者: 技术见闻 | 来源:发表于2020-06-08 15:57 被阅读0次

    Go是一种强类型的静态编译语言
    Go语言内置了七类基本数据类型
    • 布尔类型:bool

    var ok bool = true
    var ok bool = 1 //error 1是整型字面量
    

    • 整型:byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr

    var a int = 1
    var b int32 = 2
    b = a //error 不同类型的整型必须进行强制类型转换
    

    • 浮点型:float32 float64

    var b := 10.00 //浮点数字面量被自动推断为float64类型
    

    • 复数:complex64 complex128
    complex64是由两个float32构成的,complex128是由两个float64构成的

    var value1 complex64 = 3.1 + 5i
    value2 := 3.1 + 6.i
    var v = complex(2.1, 3) //构造一个复数
    a := real(v) //返回实数部分
    b := image(v) //返回复数虚部
    

    • 字符串:string
    • 字符串是常量,可以通过索引访问字节单元,但是不能修改

    var a = "hello world"
    b := a[0]
    a[1] = 'b' //error
    

    • 字符串转换成[]bytes要慎用,当字符串太大的时候,要复制一份内存

    a := "hello, world"
    b := []byte(a)
    

    • 字符串尾部不包含NULL字符,跟C和C++不一样
    • 字符串类型底层实现是一个二元的数据结构,一个指针指向字节数组的起点,另一个是长度

    // runtime/string.go
    type stringStruct struct {
        str unsafe.Pointer
        len int
    }
    

    • 基于字符串创建的切片和原字符串指向的相同的底层字符数组(视图),一样不能修改,对于字符串切片操作返回的子串仍然是string,而非slice

    a := "hello world"
    b := a[0:4]
    c := a[1:]
    

    • 字符串可以转换成字节数组,也可以转换成Unicode的字节数组

    a := "hello world"
    b := []byte(a)
    c := []rune(a) //转成Unicode的字节数组
    

    • 字符串的运算

    a := "hello"
    b := "world"
    c := a + b
    len(a)
    

    • rune类型
    Go内置两种字符类型,一种byte的字节类型(byte是uint的别名),另一种是标识Unicode编码的字符rune,rune在Go内部是int32类型的别名,占用4个字节,Go语言默认是Utf-8类型

    参考<<Go语言核心编程>>

    相关文章

      网友评论

          本文标题:Go核心语言编程 - 基本数据类型(2)

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