golang interface type constraints