Czym są runy w języku Golang? Jak używać Rune w Golang? Odpowiedź znajdziesz w tym artykule.

W przeszłości dysponowaliśmy tylko jednym zestawem znaków, nazywanym ASCII (American Standard Code for Information Interchange). Następnie używamy 7 bitów do reprezentacji 128 znaków, w tym wielkich i małych liter alfabetu angielskiego, cyfr, różnych znaków interpunkcyjnych i znaków sterujących urządzeniem. Z powodu tych ograniczeń znakowych większość populacji nie mogła korzystać ze swojego systemu pisma. Aby rozwiązać ten problem, „narodził się” Unicode. Unicode jest rozszerzeniem kodu ASCII zawierającym wszystkie znaki używane obecnie na świecie w systemach pisma. Obejmuje ona akcenty, znaki diakrytyczne, kody kontrolne, takie jak tabulatory i podziały wiersza, przypisując każdemu znakowi standardowy numer zwany „punktem kodowym Unicode” lub w języku Go „runą”. Typ Rune jest aliasem typu int32.
O czym należy pamiętać w przypadku run w języku Golang
- Zawsze pamiętaj, że string to sekwencja bajtów, a nie runa. Ciąg może zawierać tekst Unicode zakodowany w UTF-8. Jednak kod źródłowy języka Go jest kodowany w formacie UTF-8, więc nie ma potrzeby kodowania ciągów znaków w formacie UTF-8.
- UTF-8 koduje wszystkie znaki Unicode w zakresie od 1 do 4 bajtów, przy czym 1 bajt przeznaczony jest na kod ASCII, a reszta na runy.
- Standard ASCII składa się w sumie z 256 elementów, z czego 128 to znaki, a cyfry 0–127 to punkty kodowe. W tym przypadku punkt kodowy odnosi się do elementu reprezentującego pojedynczą wartość.
Na przykład:
♄
Jest to runa o wartości szesnastkowej ♄.
Prawdziwe znaczenie run
Reprezentuje stałą runiczną, gdzie wartość całkowita identyfikuje punkt kodowy Unicode. W języku Go literał runiczny jest reprezentowany przez jeden lub więcej znaków ujętych w nawiasy, takich jak „g”, „\t” itd. Pomiędzy nawiasami można umieścić dowolny znak z wyjątkiem znaku nowej linii i nawiasu bez znaku ucieczki. Tutaj znaki ujęte w nawiasy reprezentują wartość Unicode danego znaku, a ciągi wieloznakowe z ukośnikiem odwrotnym (na początku ciągu wieloznakowego) kodują wartości w innym formacie. W Rune Literal wszystkie ciągi zaczynające się od ukośnika odwrotnego są nieprawidłowe, tylko poniższe pojedyncze znaki ucieczki reprezentują wartości specjalne, gdy używasz ich z ukośnikiem odwrotnym:
Charakter |
Unikod |
Opisać |
\A |
U+0007 |
Alert lub dzwonek |
\B |
U+0008 |
Backspace |
\F |
U+000C |
Dane formularza |
\N |
U+000A |
Przesunięcie wiersza lub podział wiersza |
\R |
U+000D |
Powrót do początku wiersza |
\T |
U+0009 |
Karta pozioma |
\w |
U+000b |
Karta pionowa |
\\ |
U+005c |
Ukośnik odwrotny |
\' |
U+0027 |
Apostrof |
\” |
U+0022 |
Podwójne cudzysłowy (dotyczy tylko ciągów znaków) |
Na przykład:
//Minh họa chương trình Go đơn giản về cách tạo một rune
package main
import (
"fmt"
"reflect"
)
func main() {
// Tạo một rune
rune1 := 'B'
rune2 := 'g'
rune3 := '\a'
// Hiện rune và kiểu của nó
fmt.Printf("Rune 1: %c; Unicode: %U; Type: %s", rune1,
rune1, reflect.TypeOf(rune1))
fmt.Printf("\nRune 2: %c; Unicode: %U; Type: %s", rune2,
rune2, reflect.TypeOf(rune2))
fmt.Printf("\nRune 3: Unicode: %U; Type: %s", rune3,
reflect.TypeOf(rune3))
}
Wynik:
Rune 1: B; Unicode: U+0042; Type: int32
Rune 2: g; Unicode: U+0067; Type: int32
Rune 3: Unicode: U+0007; Type: int32
Przykład 2:

Wynik:
Character: ♛, Unicode:U+265B, Position:0
Character: ♠, Unicode:U+2660, Position:1
Character: ♧, Unicode:U+2667, Position:2
Character: ♡, Unicode:U+2661, Position:3
Character: ♬, Unicode:U+266C, Position:4