Golang 中未定义的地图元素

Undefined map element in Golang

出于某种原因,我收到以下错误

./execTest.go:24: template.datacenter undefined (type map[string]string has no field or method datacenter)
./execTest.go:25: template.datacenter undefined (type map[string]string has no field or method datacenter)

这是我的 Go 代码

package main

import (
    "fmt"
)

var template map[string]string

func main() {
    template := map[string]string{
        "cluster":    "",
        "datacenter": "The_Datacenter",
        "host":       "",
        "password":   "",
        "username":   "",
        "vm_name":    "",
    }

    args := []string{
        "--acceptAllEulas",
        "--compress=9",
    }

    if template.datacenter != "" {
        args = append(args, fmt.Sprintf("--datacenter=%s", template.datacenter))
    }

    fmt.Println(template)
}

template 是地图,不是 struct。如果要访问 datacenter 字符串,则需要编写 template["datacenter"].

http://play.golang.org/p/M0PHGx8R8g

package main

import (
    "fmt"
)

var template map[string]string

func main() {
    template := map[string]string{
        "cluster":    "",
        "datacenter": "The_Datacenter",
        "host":       "",
        "password":   "",
        "username":   "",
        "vm_name":    "",
    }

    args := []string{
        "--acceptAllEulas",
        "--compress=9",
    }

    if template["datacenter"] != "" {
        args = append(args, fmt.Sprintf("--datacenter=%s", template["datacenter"]))
    }

    fmt.Println(template)
}