The json.Unmarshal function accepts case-insensitive object key matches

For example, the following program prints bar, instead of foo.

package main

import (
	"encoding/json"
	"fmt"
)

	"encoding/json"
	HTML string `json:"HTML"`
}

var s = `{"HTML": "foo", "html": "bar"}`

func main() {
	var t T
	if err := json.Unmarshal([]byte(s), &t); err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(t.HTML) // bar
}

The docs of the json.Unmarshal function states "preferring an exact match but also accepting a case-insensitive match". So personally, I think this is a bug in the json.Unmarshal function implementation, but the Go core team don't think so.