makeによってデータ構造の参照を作り、関数に参照を渡しデータの変更を行います。
以下のような出力になるのはなぜでしょうか?

https://play.golang.org/p/lOC49HmVcq

package main

import (
    "fmt"
)

func main() {
    a := make(map[string]int)
    set(a)
    fmt.Println(a)
}

func set(a map[string]int){
  for i:=0; i<10; i++ {
    a["key"]++
  }
  a = map[string]int{"key":1}
  fmt.Println(a)
}

出力
map[key:1]
map[key:10]

参照の値変更は最終的にa = map[string]int{"key":1}が適用されて、予想した出力は
map[key:1]
map[key:1]

だったのですが、、ロジックを教えてください。