Golang: Rune
What is Rune
Rune means Unicode Codepoint. (think of it as a character type.) It is a jargon golang invented.
A rune is ALL of the following. Which meaning you pick depends on context:
- A integer, with possible values from 0 to 2^32 -1.
- A golang type, with keyword
rune
. It is alias to the typeint32
. - A Unicode Codepoint.
- A character.
Purpose of Rune
The purpose of rune type is to directly represent one character. It is essentially a character type, just with a fancy name.
Rune Literal
A Rune Literal is a syntax to represent one Unicode character in golang.
Like this:
'c'
,
where the c is 1 single Unicode character. (but may be presented by escape sequence)
All of the following are rune values.
var capA = 'A'
var heart = '♥'
var omg = '😂'
var newline = '\n'
〔see Golang: String Backslash Escape〕var heart = '\u2665'
same as '♥'var omg = '\U0001F602'
same as '😂'
Print a rune in decimal, Hexadecimal , and standard unicode notations:
package main import "fmt" func main() { // print a rune in decimal, hex, and standard unicode notations var xx = 'A' fmt.Printf("%d %x %U\n", xx, xx, xx) // 65 41 U+0041 }
Print Rune
Since a rune value is a integer, we can use Printf formats that converts integer to string.
%c
- print as the byte sequence of the character in utf8 encoding.
%q
-
print in golang rune syntax. Sample output:
'a'
. %U
-
print in Unicode notation. Sample output:
U+03B1
. %d
- print as integer in decimal notation
%x
- print as integer in Hexadecimal Number, with lower-case letters for a-f
package main import "fmt" // print rune in different formats func main() { var x = '😂' fmt.Printf("%c\n", x) // 😂 fmt.Printf("%q\n", x) // '😂' fmt.Printf("%U\n", x) // U+1F602 fmt.Printf("%b\n", x) // 11111011000000010 fmt.Printf("%o\n", x) // 373002 fmt.Printf("%d\n", x) // 128514 fmt.Printf("%x\n", x) // 1f602 }
Rune Sequence
Value of rune type is just a single char.
For a sequence of chars, use Array or Slice. A slice of rune is common, and can be converted to string. 〔see Golang: String, Byte Slice, Rune Slice〕