The filetype needs to be set during BufRead in order for the did_filetype() check to prevent the file being detected as a conf file. One example where this can occur is if a cgo file has a #include at the top of the file. The # is detected in vim's generic configuration (conf file) toward the bottom of filetype.vim
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5496066