package embd const ( CapNormal int = 1 << iota CapI2C CapUART CapSPI CapGPMC CapLCD CapPWM ) type PinDesc struct { N int IDs []string Caps int } type PinMap []*PinDesc func (m PinMap) Lookup(k interface{}) (*PinDesc, bool) { switch key := k.(type) { case int: for i := range m { if m[i].N == key { return m[i], true } } case string: for i := range m { for j := range m[i].IDs { if m[i].IDs[j] == key { return m[i], true } } } } return nil, false }