07. Go极简教程 map的基础使用

map的声明

package main

import "log"

// Vertex 大写开头的为Public对象, 必须写注释说明, golint会做检测
type Vertex struct {
    Lat, Long float64
}

func main() {
    // 使用 make 声明一个map, 键为string, 值为Vertex类型
    var m = make(map[string]Vertex)
    m["dog"] = Vertex{50, 100}
    log.Println(m)        //map[dog:{50 100}]
    log.Println(m["dog"]) //{50 100}

    // 也可使用有初始值的map[k]v声明
    var m2 = map[string]Vertex{
        "dog": Vertex{100, 150},
        "cat": {200, 250}, // 可以忽略结构体的类型名
    }
    m2["fish"] = Vertex{300, 350}
    log.Println(m2) // map[fish:{300 350} dog:{100 150} cat:{200 250}]
}

map的操作

package main

import (
    "log"
)

// Vertex 大写开头的为Public对象, 必须写注释说明, golint会做检测
type Vertex struct {
    Lat, Long float64
}

func main() {
    // 也可使用有初始值的map[k]v声明
    var m = map[string]Vertex{
        "dog": {100, 150},
        "cat": {200, 250},
    }

    // 插入或修改元素
    m["fish"] = Vertex{300, 350}

    // 获取元素, ok是来检测对象是否存在
    var ele, ok = m["fish"]
    log.Println(ele, ok) //Vertex{300, 350}, true

    ele2, ok := m["monkey"]
    log.Println(ele2, ok) //Vertex{0, 0}, false

    // 删除
    delete(m, "fish")

    // 合并map
    m2 := map[string]Vertex{
        "dog2": {1000, 1500},
        "cat2": {2000, 2500},
    }
    for k, v := range m2 {
        m[k] = v
    }

    // map遍历
    for k, v := range m {
        log.Println("key:", k, "value:", v)
    }

    log.Println(m)
}

参考资料:
http://go-tour-zh.appspot.com/

Go极简教程 继续阅读( 目录)

你可能感兴趣的:(07. Go极简教程 map的基础使用)