golang数据类型

         Go 语言中的数据类型,也是多姿多态,不过一般分为两大类,基本类型和引用类型,基本数据类型有int,float,bool,string,以及数组和struct,特点是变量直接存储值,内存通常在栈中分配,栈在函数调用完会被释放,引用类型有,指针,slice,map,chan等都是引用类型,特点是变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配,通过GC回收。

基本类型

整型

整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64

对应占用的内存大小

int8:    8位        1字节
int16: 16位      2个字节
int32: 32位     4个字节
int64: 64位     8个字节

可以使用math包来获取取值范围。

package main

import (
    "fmt"
    "math"
)

func main() {
    fmt.Println("int8: ", math.MinInt8, math.MaxInt8)
    fmt.Println("int16: ", math.MinInt16, math.MaxInt16)
    fmt.Println("int32: ", math.MinInt32, math.MaxInt32)
    fmt.Println("int64: ", math.MinInt64, math.MaxInt64)
}

浮点型

Go语言提供两种用来存储小数的数据类似即浮点型,浮点型又分为float32、float64。区别在于表达数字的长度和精度一样。

对应占用内存的大小

float32: 32位    4个字节
float64: 64位    8 个字节

 获取取值范围

package main

import (
    "fmt"
    "math"
)

func main() {
    fmt.Println("Float32: ", math.MaxFloat32)
    fmt.Println("Float32: ", math.MaxFloat64)

}

布尔值

Go语言中的bool类型也是比较有特色的,只包含True和False两个值。布尔类型在内存中只占用一位

注意:

  1. 布尔类型变量的默认值为false
  2. Go 语言中不允许将整型强制转换为布尔型.
  3. 布尔型无法参与数值运算,也无法与其他类型进行转换。

字符串

Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)一样。 Go 语言里的字符串的内部实现使用UTF-8编码。 字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII码字符,字符串在内存中占用16位也就是2个字节

byte和rune类型

组成每个字符串的元素叫做“字符”,可以通过遍历或者单个获取字符串元素获得字符。 字符用单引号(’)包裹起来,如:

Go 语言的字符有以下两种:

  1. uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
  2. rune类型,代表一个 UTF-8字符

 

原文地址:https://www.cnblogs.com/Nolover/p/12503852.html