Go语言入门篇-复合数据类型

复合数据类型

主要讨论四种类型——数组、slice、map和结构体

数组和结构体聚合类型   --数组和结构体都是有固定内存大小的数据结构

  --数组:由同构的元素组成——每个数组元素都是完全相同的类型

  --结构体:由异构的元素组成

slice和map则是动态的数据结构,它们将根据需要动态增长。

一。数组

package main

import (
    "fmt"
)

func main() {
    var a [3]int          //声明数组,默认数组每个元素都被初始化为0值    
    fmt.Println(a[0])     //打印a数组的第1个元素值  0
    fmt.Println(a[len(a)-1]) //打印a数组的倒数第1个值  0    
    
    fmt.Println("====================================")    
        
    for i,v:=range a{    //range a:将a数组的索引和值分别赋值给i和v
    
        fmt.Printf("%d %d\n",i,v)
        //打印值 0 0
        //    1 0
        //    2 0
    }
    
    fmt.Println("====================================")
    
    for _,v:=range a{  //range a:将a的索引值赋值给_代表不关心索引值,将a数组值循环赋值给v
        fmt.Printf("%d\n",v)
        //打印值    0
        //    0
        //    0
    }
    
    fmt.Println("====================================")
    
    var p [3]int=[3]int{1,2,3}  //初始化数组,值为1,2,3
    p1:=[...]int{1,2,3}  //同上述p等价,数组长度位置"...",代表数组长度根据初始化值个数计算
    fmt.Printf("%T\n",p1)   //[3]int
    var q [3]int=[3]int{1,2} //初始化数组,值为1,2,0
}
package main

import (
    "fmt"
)

func main() {
    type Currency int

    const (
        USD Currency = iota // 美元
        EUR                 // 欧元
        GBP                 // 英镑
        RMB                 // 人民币
    )

    symbol := [...]string{USD: "$", EUR: "", GBP: "", RMB: ""}

    fmt.Println(RMB, symbol[RMB]) // "3 ¥"
}

猜你喜欢

转载自www.cnblogs.com/kaixinyufeng/p/9552164.html