Golang: Rune

By Xah Lee. Date: . Last updated: .

What is Rune

Rune means Unicode codepoint. (think of it as a character.) 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.

What is Codepoint

Unicode gives each character a integer id. This integer id is called codepoint.

Note, some codepoints are non-printable characters. For example, space, newline, tab, right-to-left mark, combining character for accents, etc.

[see Unicode Basics: Character Set, Encoding, UTF-8, Codepoint]

Unicode Standard Notation for Codepoint

Unicode has a standard notation for codepoint, starting with U+ followed by its codepoint in hexadecimal notation. Example:

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, hex, and standard unicode notations:

package main

import "fmt"

func main() {

	// print a rune in decimal, hex, and standard unicode notations

	var capA = 'A'

	fmt.Printf("%d %x %U\n", capA, capA, capA) // 65 41 U+0041
}

Print Rune

Since a rune value is a integer, we can use Printf formats that converts integer to string.

Golang: Printf Verbs

%c
print character as is (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 in base 10
%x
print in base 16, 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, you use slice type instead. (Slice is a variable length array.) A slice of rune is common, and can be converted to string.

See:

Reference

The Go Programming Language Specification - The Go Programming Language#String_literals

Golang String

Golang

Compile and Run

String

Types and Values

Branching and Loop

Data Structure

Function

Misc

Examples

Reference