Go gotcha: Why aren't the characters concatenated?
Why doesn't these print statements give the same result?
fmt.Println("H" + "i")
fmt.Println('H' + 'i')
Hi
177
Answer
The rune literals 'H'
and 'i'
are integer values identifying Unicode code points: 'H'
is 72 and 'i'
is 105. (See What is a rune?)
You can turn a code point into a string using a conversion:
fmt.Println(string(72) + string('i')) // "Hi"
Converting a signed or unsigned integer value to a string type yields a string containing the UTF-8 representation of the integer. Values outside the range of valid Unicode code points are converted to "\uFFFD"
. The Go Programming Language Specification: Conversions
You can also use the fmt.Sprintf
function:
s := fmt.Sprintf("%c%c, world!", 72, 'i')
fmt.Println(s)// "Hi, world!"
The Print with fmt cheat sheet lists the most common formatting verbs and flags.
Comments
Be the first to comment!