天天看点

Go语言变量类型

Go语言变量类型的代码演示

basic_demo.go文件

package main

import (
    "fmt"
)

const (
    I      =
    PI     =
    PREFIX = "Go_"
)

var (
    i      int
    pi     float32
    prefix string
)

func main() {

    // 分组声明变量和常量
    fmt.Println(i)
    fmt.Println(PREFIX)

    // 一维数组
    a := ]int,,}
    b := ]int,,}
    c := [...]int,,}
    fmt.Println(a, b, c)

    // 二维数组
    doubleArray := ]]int{]int,,,}, ]int,,,}}
    fmt.Println(doubleArray)
    easArray := ]]int{,,,}, ,,,}}
    fmt.Println(easArray)

    // 动态数组 slice并不是一个真正的动态数组,而是一个引用类型。
    // 和声明array一样,只是少了长度
    // slice := []byte{'a','b','c'}
    // slice可以从一个数组或一个已经存在的slice中再次声明
    var ar = ]byte{'a', 'b', 'c', 'd', 'e', 'd'}
    var slice1, slice2 []byte
    slice1 = ar]
    slice2 = ar:]
    slice3 := ar[:]
    slice4 := slice3[]
    fmt.Printf("%v,%v,%v", slice1, slice2, slice3)
    fmt.Println(slice4)

    // 字典map 格式为map[keyType]valueType
    // 1.直接声明
    // var numbers map[string] int
    // 2.简短的map声明方式
    // numbers := make(map[string]int)
    // numbers["one"] = 1
    // numbers["two"] = 2
    numbers := map[string]int{"one":, "two":}
    fmt.Println(numbers)
    // 查找有没有对应的key值
    if _, ok := numbers["one"]; ok {
        fmt.Println("有key值为one的键值对!")
    }
    // 删除指定key的value
    delete(numbers, "two")
    fmt.Println(numbers)

    // 变量未填充前的默认值,“零值”
    // int,int8,int32,int64,rune(rune的实际类型是int32),float32,float64 --> 0
    // uint byte(byte的实际类型是uint8) --> 0x0
    // bool --> false
    // string --> ""

}