A avaliação do compilador vai diferir para expressão constante e outra expressão

Por que o código abaixo falha na compilação?

package main

import (
    "fmt"
    "unsafe"
)

var x int = 1

const (
    ONE     int = 1
    MIN_INT int = ONE << (unsafe.Sizeof(x)*8 - 1)
)

func main() {
    fmt.Println(MIN_INT)

}

Eu recebo um erro

main.go: 12: constant 2147483648 transborda int

A declaração acima está correta. Sim, 2147483648 transborda int (na arquitetura de 32 bits). Mas a operação de mudança deve resultar em um valor negativo, ou seja, -2147483648.

Mas o mesmo código funciona, se eu alterar as constantes em variáveis e obter a saída esperada.

package main

import (
    "fmt"
    "unsafe"
)

var x int = 1

var (
    ONE     int = 1
    MIN_INT int = ONE << (unsafe.Sizeof(x)*8 - 1)
)

func main() {
    fmt.Println(MIN_INT)

}

questionAnswers(1)

yourAnswerToTheQuestion