为什么地图不返回其值?

I have a function which simply returns the value of a map. However for some reasons it doesn't do that. Any idea why ? I've pasted here the code. You may also play it using

Try it!

package main

import "fmt"

func main() {    
    a := CountryCode("Australia")    
    fmt.Println(a)    
}

func CountryCode(s string) string {    
    m := make(map[string]string)
    // [snip]
    m["AU"] = "Australia"
    // [snip]
    return m[s]
}

func CodeByCountry(s string) string {
    m := make(map[string]string)
    // [snip]
    m["Australia"] = "AU"
    // [snip]
    return m[s]
}

You're not using the right function, the one using the map whose key is a name. You probably want

a := CodeByCountry("Australia")

This works.

But it makes no sense to create the map each time you need it. Take the map creation out of the functions, and put it for example in the init :

package main

import "fmt"

var byCode = make(map[string]string)
var byName = make(map[string]string)

func init() {
    m := byCode
    m["AF"] = "Afghanistan"
    m["AL"] = "Albania"
    m["DZ"] = "Algeria"
    m["AS"] = "American Samoa"

    m = byName
    m["Austria"] = "AT"
    m["Mozambique"] = "MZ"
    m["Solomon Islands"] = "SB"
    m["United States"] = "US"
    m["Anguilla"] = "AI"
    m["Australia"] = "AU"
}

func CountryCode(s string) string {
    return byCode[s]
}

func CodeByCountry(s string) string {
    return byName[s]
}

func main() {
    a := CodeByCountry("Australia")
    fmt.Println(a)
}

Another solution for the initialization, as it seems bijective, would be to have one function adding a pair and filling both maps :

func addInMaps(code,name string) {
     byCode[code] = name
     byName[name] = code
}