high := code / 16; low := code % 16; switch high { case 0: template += "40" case 1: template += "44" case 2: template += "42" // ... case 15: template += "43" } switch low { case 0: template += ";30" case 1: template += ";34" // ... case 15: template += ";33" }
s := [...]string{"0", "4", "2", ..., "3"} template := "\x1B[4" + s[code / 16] + ";3" + s[code % 16] + "m"
colors := []string{"0", "4", "2", "6", "1", "5", "3", "7", "0", "4", "2", "6", "1", "5", "3"} bg := colors[(b & 0xF0) >> 8] fg := colors[b & 0x0F] fmt.Sprintf("\x1B[4%d;3%dm", bg, fg)