美文网首页
Go 语言的各种数据类型的默认零值

Go 语言的各种数据类型的默认零值

作者: 星塵子 | 来源:发表于2020-04-14 20:47 被阅读0次

默认值

Type 默认值
Interger 0
Float 0
Complex Number 实数部分:0 虚数部分:0
Byte 0
Rune 0
String ""
Bool false
Array 元素的默认值
Slice nil
Map nil
Channel nil
Interface nil
Struct 字段类型的默认值
Pointer nil
Function nil

验证

package main

import (
    "fmt"
)

func main() {
    var a int
    fmt.Println("int 默认值: ", a)

    var b uint  
    fmt.Println("uint 默认值: ", b)

    var c float64
    fmt.Println("float 默认值: ", c)

    var d complex64
    fmt.Println("complex 默认值: ", d)

    var e byte
    fmt.Println("byte 默认值: ", e)

    var f rune
    fmt.Println("rune 默认值: ", f)

    var g string
    fmt.Printf("string 默认值: %q \n", g)

    var h bool
    fmt.Println("bool 默认值: ", h)

    var i [3]bool
    fmt.Println("array 默认值: ", i)

    var j []int
    fmt.Println("slice is nil: ", j == nil, " 默认值: ", j)

    var k map[int]bool
    fmt.Println("map is nil: ", k == nil, " 默认值: ", k)

    var l chan int
    fmt.Println("channel 默认值: ", l)

    var m interface{}
    fmt.Println("interface 默认值: ", m)

    type Staff struct {
        name string
        age  int
        sex  bool
    }

    var n = Staff{}
    fmt.Println("struct 默认值: ", n)

    var o func()
    fmt.Println("function 默认值: ", o)

    var p *int
    fmt.Println("pointer 默认值: ", p)
}
结果

各类型的最大/最小值

//无符号整型, 默认值都是 0
    var u8 uint8   //0
    var u16 uint16 //0
    var u32 uint32 //0
    var u64 uint64 //0
    fmt.Println("无符号整型:")
    fmt.Printf("default -> u8: %d, u16: %d, u32: %d, u64: %d\n", u8, u16, u32, u64)

    //无符号整型,最大值
    u8 = math.MaxUint8   // 1<<8 - 1   //255
    u16 = math.MaxUint16 // 1<<16 - 1 //65535
    u32 = math.MaxUint32 // 1<<32 - 1 //4294967295
    u64 = math.MaxUint64 // 1<<64 - 1 //18446744073709551615
    fmt.Printf("max -> u8: %d, u16: %d, u32: %d, u64: %d\n", u8, u16, u32, u64)

    //整型, 默认值都是 0
    var i8 int8
    var i16 int16
    var i32 int32
    var i64 int64
    //int 32位系统取值范围为 int32, 64位系统取值范围为 int64 ,两种系统取值相同,但类型不同
    var i int
    //i = i32 //报错,编译不通过,类型不同
    //i = i64 //报错,编译不通过,类型不同
    fmt.Println("整型:")
    fmt.Printf("default -> i8: %d, i16: %d, i32: %d, i64: %d, i: %d\n", i8, i16, i32, i64, i)

    //整型, 最小值
    i8 = math.MinInt8   // -1 << 7
    i16 = math.MinInt16 // -1 << 15
    i32 = math.MinInt32 // -1 << 31
    i64 = math.MinInt64 // -1 << 63
    i = -1 << 63
    fmt.Printf("min -> i8: %d, i16: %d, i32: %d, i64: %d, i: %d\n", i8, i16, i32, i64, i)

    //整型, 最大值
    i8 = math.MaxInt8   // 1<<7 - 1
    i16 = math.MaxInt16 // 1<<15 - 1
    i32 = math.MaxInt32 // 1<<31 - 1
    i64 = math.MaxInt64 // 1<<63 - 1
    i = 1<<63 - 1
    fmt.Printf("max -> i8: %d, i16: %d, i32: %d, i64: %d, i: %d\n", i8, i16, i32, i64, i)

    //浮点型 默认值: 0.000000
    //float32 精度6位小数
    var f32 float32
    //float64 精度15位小数 优先使用此类型
    var f64 float64
    fmt.Println("浮点型:")
    fmt.Printf("default: f32: %f, f64: %f\n", f32, f64)

    //浮点型 最小值
    f32 = math.SmallestNonzeroFloat32 // 1 / 2 **(127 - 1 + 23)
    f64 = math.SmallestNonzeroFloat64 // 1 / 2 ** (1023 -1 + 52)
    fmt.Printf("min: f32: %v, f64: %v\n", f32, f64)

    //浮点型 最大值
    f32 = math.MaxFloat32 // 2**127 * (2**24 - 1) / 2**23
    f64 = math.MaxFloat64 // 2**1023 * (2**53 -1) / 2**52
    fmt.Printf("max: f32: %v, f64: %v\n", f32, f64)

    f32 = 1.12345678
    f64 = 1.12345678901234567
    fmt.Printf("f32: %v, f64: %v\n", f32, f64) // 末位四舍五入:f32: 1.1234568, f64: 1.1234567880123457

相关文章

  • Go 语言的各种数据类型的默认零值

    默认值 Type默认值Interger0Float0Complex Number实数部分:0 虚数部分:0Byte...

  • Go Nil

    Go语言数据类型中,布尔类型的零值(初始值)为false,数值类型的零值为0,字符串类型的零值为空字符串""。 对...

  • Go基础-005-05 基础数据类型 字符串型

    1. 零值 零值:空字符串 ”“ 2. 类型 表示一组组合的集合。属于高级数据类型(复合数据类型)。在 Go 语言...

  • Go语言中的零值

    Go语言中的零值是变量没有做初始化时系统默认设置的值。var b bool // bool型零值是falseva...

  • 08. 零值

    Go语言的变量在没有明确初始化时,会有一个 零值,即默认值。不同类型的变量,零值是不同的。 数值型 零值为 0布...

  • Go语言的new和make

    在go语言中, 通过var声明变量时, 不指定默认值时, 就是使用他们的零值。 例如int类型的零值是0,stri...

  • Go语言从入门到实战-数据类型

    数据类型 基本数据类型 零值 当一个变量或者新值被创建时, 如果没有为其明确指定初始值,go语言会自动初始化其值为...

  • 02-Go语言常量和变量

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

  • go语言

    【译】GOPATH 的默认值 "翻译自 Go 语言作者的博客。这只是设置了 GOPATH 默认值,GOROOT 还...

  • 04-Go语言常量和变量

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

网友评论

      本文标题:Go 语言的各种数据类型的默认零值

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