Golang: Rune

By Xah Lee. Date: . Last updated: .

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:

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.

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]

Golang String