В http://tour.golang.org/#14 они показывают пример, где число 1 сдвинуто на 64 бит. Это, конечно, приведет к переполнению, но затем оно вычитается на 1, и все хорошо. Как половина выражения приводит к сбою, а все выражение в целом работает нормально?
Мысли:
Я бы предположил, что установка без знака на большее число, чем то, что он позволяет, вызывает взрыв. Казалось бы, память распределяется более свободно в правой части выражения, чем слева? Это правда?