DEV Community

Sam
Sam

Posted on • Updated on

Golang: All you need to know about rune types

#go

Golang: All You Need to Know About Rune Types

In Golang, the rune type plays a crucial role in dealing with characters, especially when working with text that goes beyond the basic ASCII character set. Here's a breakdown of what you need to know:

Understanding Runes:

  • Unicode Representation: A rune represents a single Unicode code point. Unicode is an international standard that assigns unique codes to characters across various languages and symbols. This allows consistent representation of text regardless of the system or language.
  • Underlying Type: While it behaves like a character, a rune is technically an alias for the int32 type. This means it can store a 32-bit integer value corresponding to the Unicode code point of a character.

Why Use Runes?

  • Universal Character Handling: Unlike bytes that may represent different characters depending on the encoding, runes guarantee consistent representation across all languages and character sets. This is essential for handling text that includes characters beyond the basic ASCII set, like emojis or letters with accents.
  • Iterating over Text: When working with strings containing characters from different languages, iterating over bytes can be problematic. Runes allow you to iterate through each character accurately.

Simple Examples:

package main

import (
    "fmt"
)

func main() {
    // Rune representing the letter 'A' (Unicode code point 65)
    var letterA rune = 'A'
    fmt.Println(letterA) // Output: 65 (Integer representation)

    // Rune representing the Euro symbol (€)
    euroSymbol := '€'
    fmt.Println(euroSymbol) // Output: € (Actual symbol)

    // String literal (sequence of runes)
    message := "Hello, world!"

    // Looping through runes in a string
    for _, char := range message {
        fmt.Printf("%c ", char) // %c formats as character
    }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
pauljlucas profile image
Paul J. Lucas

Why is this tagged for C and C++?