gopacket层TCP结构ACK与Ack

I am trying to construct TCP packets using the golang libraries gopacket and layers. In layers there is a struct aptly called TCP. There are two ACK fields and I am unsure why there is such a distinction. One is a bool and one is a uint16. What is the purpose for this divergence. Any help is much appreciated.

type TCP struct {
    BaseLayer
    SrcPort, DstPort                           TCPPort
    Seq                                        uint32
    Ack                                        uint32
    DataOffset                                 uint8
    FIN, SYN, RST, PSH, ACK, URG, ECE, CWR, NS bool
    Window                                     uint16
    Checksum                                   uint16
    Urgent                                     uint16

    Options []TCPOption
    Padding []byte
    // contains filtered or unexported fields
}