printk is the low level primitive for stdout printing and it's done this way as low level drivers generally only accept single characters.
There are upper level functions which simply takes a []byte and make fmt.Printf() work seamlessly and effectively when not printing on an UART that only takes a single character as output.
If `printk` isn't implemented, then fall back to repeated calls of `printck`.