gopacket version: 1.1.18
Comparing gopacket/layers's Dot11 deauth reason codes with several sources from a quick Google search (1, 2, 3, 4), it appears the definitions in gopacket are offset by one.
gopacket's definitions start with Dot11ReasonReserved = 1, while as far as I can tell 0 is in fact reserved. The offset continues down the list: gopacket lists Dot11ReasonUnspecified = 2, while according to all sources I can find 1 in fact means Unspecified, and so on.