Go基础数据类型声明

葛兰萨索星空下& 雍容致殇 作品

世界没有悲剧和喜剧之分,如果你能从悲剧中走出来,那就是喜剧;如果你沉缅于喜剧之中,那它就是悲剧。 by 上德若谷

引用于:http://wufazhuce.com/one/1357

变量声明未初始化的默认值

var (
    intA int
    float32A float32
    float64A float64
    boolA bool
    stringA string
    arrA []int
    sliceA []int
    mapA map[string]int
    pointA *int
)

func main() {
    //变量声明未初始化的默认值
    fmt.Println(intA == 0) //true
    fmt.Println(float32A == 0) //true
    fmt.Println(float64A == 0) //true
    fmt.Println(boolA == false) //true
    fmt.Println(stringA == "") //true
    fmt.Println(arrA == nil) //true
    fmt.Println(sliceA == nil) //true
    fmt.Println(mapA == nil) //true
    fmt.Println(pointA == nil) //true
}

全局变量和常量

常用书写格式:

/*
 全局变量,允许修改,如果声明的变量名:
 1、首字母小写,类似于定义的私有变量
 2、首字母大写,类似于定义的共有变量
*/
var (
    intA = 1
    strB = "Go"
    arrC = [3]int{1, 2, 3}
    floatD = 3.14
    boolE = false
    PubA = "public" //公共变量
)

/*
 全局常量,允许修改,如果声明的变量名:
 1、首字母小写,类似于定义的私有变量
 2、首字母大写,类似于定义的共有变量
*/
const (
    cIntA = 1
)

内部变量

常用书写格式:

func methodName() {
    /*
     内部变量,只在该函数体内有效
    */
    innerA := 123
}

忽略变量

    /*
         忽略变量,用`_`声明。
         Go对于已声明但未使用的变量会在编译阶段报错,所以可用该方法规避此类现象。
         常用于遍历slice和map。
    */
    _, innerA := 123, 456
    fmt.Println(innerA) //456

    numbers := make(map[string]int)
    numbers["a"] = 1
    numbers["b"] = 2
    numbers["c"] = 3

    //不使用key值时,用`_`忽略掉
    for _, value := range numbers {
        fmt.Println(value)
    }

数组类型的声明和初始化

//声明并初始化数组
//声明了一个长度为3的int数组
a := [3]int{1, 2, 3}
//声明了一个长度为10的int数组,其中前三个元素初始化为1、2、3,其它默认为0
b := [10]int{1, 2, 3}
//可以省略长度而采用`...`的方式,Go会自动根据元素个数来计算长度
c := [...]int{4, 5, 6}
fmt.Println("a len = ", len(a)) //3
fmt.Println("b len = ", len(b)) //10
fmt.Println("c len = ", len(c)) //3

数组详细用法:http://www.jianshu.com/p/163663ec7e78

slice类型的声明和初始化

//通过指向一个数组初始化slice类型变量
arrA := [5]int{1, 2, 3, 4, 5}
sliceA := arrA[1:3]

//使用make初始化slice类型变量
//这时sliceB中的前两个元素已经被占用,如果用append往sliceB中添加元素,只能从第三个位置开始
sliceB := make([]int, 2, 7)

//已知道元素值时,初始化切片
sliceD := []int(1, 2)

//实例化一个空切片
//append会从第一个位置添加元素
sliceC := make([]int, 0)

切片详细用法:http://www.jianshu.com/p/b414ff531a85

Map类型的声明和初始化

//声明并使用make初始化Map类型
var mapA map[string]int
mapA = make(map[string]int)

//声明并初始化Map类型
mapB := map[string]string{"a": "a1", "b": "b1", "c": "c1", "d": "d1"}

//声明Map类型
mapC := make(map[string]int)

Map详细用法:http://www.jianshu.com/p/05b7f14871b8

你可能感兴趣的:(Go基础数据类型声明)