รูนในโกลังคืออะไร? วิธีการใช้ Rune ใน Golang?บทความจะบอกคำตอบให้คุณทราบ

ในอดีต เรามีชุดอักขระเพียงชุดเดียว และเรียกว่า ASCII (รหัสมาตรฐานอเมริกันสำหรับการแลกเปลี่ยนข้อมูล) จากนั้นเราใช้ 7 บิตเพื่อแสดงอักขระ 128 ตัว ซึ่งรวมไปถึงตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ตัวเลข เครื่องหมายวรรคตอนต่างๆ และอักขระควบคุมอุปกรณ์ เนื่องจากข้อจำกัดด้านตัวอักษรนี้ ประชากรส่วนใหญ่จึงไม่สามารถใช้ระบบการเขียนแบบกำหนดเองได้ เพื่อแก้ไขปัญหานั้น Unicode จึงได้ “ถือกำเนิด” ขึ้นมา Unicode เป็นซูเปอร์เซ็ตของ ASCII ที่ประกอบด้วยอักขระทั้งหมดในระบบการเขียนของโลกปัจจุบัน มีเครื่องหมายเน้นเสียง เครื่องหมายกำกับเสียง รหัสควบคุม เช่น แท็บและการแบ่งบรรทัด กำหนดหมายเลขมาตรฐานให้กับอักขระแต่ละตัวที่เรียกว่า "จุดรหัส Unicode" หรือใน Go เรียกว่า "รูน" ประเภทรูนเป็นนามแฝงสำหรับ int32
จุดที่ต้องจำเกี่ยวกับรูนในโกลัง
- โปรดจำไว้เสมอว่าสตริงเป็นลำดับของไบต์ ไม่ใช่รูน สตริงสามารถมีข้อความ Unicode ที่เข้ารหัสในรูปแบบ UTF-8 ได้ อย่างไรก็ตามโค้ดต้นฉบับของ Go ถูกเข้ารหัสในรูปแบบ UTF-8 จึงไม่จำเป็นต้องเข้ารหัสสตริงในรูปแบบ UTF-8
- UTF-8 เข้ารหัส Unicode ทั้งหมดในช่วง 1 ถึง 4 ไบต์ โดย 1 ไบต์ใช้สำหรับ ASCII และส่วนที่เหลือใช้สำหรับรูน
- ASCII มีองค์ประกอบรวมทั้งสิ้น 256 องค์ประกอบ โดยมี 128 องค์ประกอบเป็นอักขระ และ 0-127 ถูกกำหนดให้เป็นจุดรหัส ที่นี่จุดรหัสหมายถึงองค์ประกอบที่แสดงค่าเดียว
ตัวอย่างเช่น:
♄
นี่คือรูนที่มีค่าเลขฐานสิบหก ♄
ความหมายที่แท้จริงของอักษรรูน
แสดงถึงค่าคงที่รูน โดยที่ค่าจำนวนเต็มจะระบุจุดรหัส Unicode ในภาษา Go อักษรรูนจะแสดงเป็นอักขระหนึ่งตัวหรือมากกว่านั้นที่อยู่ภายในวงเล็บ เช่น "g", "\t" เป็นต้น ระหว่างวงเล็บนี้ คุณสามารถใส่ตัวอักษรใดๆ ก็ได้ ยกเว้นอักขระขึ้นบรรทัดใหม่และวงเล็บแบบไม่หลุดเครื่องหมาย ที่นี่อักขระที่อยู่ในวงเล็บแสดงถึงค่า Unicode ของอักขระที่กำหนด และสตริงหลายอักขระที่มีแบ็กสแลช (ที่จุดเริ่มต้นของสตริงหลายอักขระ) จะเข้ารหัสค่าในรูปแบบที่แตกต่างกัน ใน Rune Literal สตริงทั้งหมดที่ขึ้นต้นด้วยแบ็กสแลชจะไม่ถูกต้อง เฉพาะอักขระหลบหนีตัวเดียวต่อไปนี้เท่านั้นที่แสดงค่าพิเศษเมื่อคุณใช้อักขระเหล่านี้กับแบ็กสแลช:
| อักขระ |
ยูนิโค้ด |
อธิบาย |
| \ก |
ยู+0007 |
การแจ้งเตือนหรือกระดิ่ง |
| _ข |
ยู+0008 |
แบ็คสเปซ |
| \ฟ |
ยู+000ซี |
แบบฟอร์มข้อมูล |
| \น |
ยู+000เอ |
การป้อนบรรทัดหรือการตัดบรรทัด |
| \ร |
ยู+000ดี |
กลับไปยังจุดเริ่มต้นของบรรทัด |
| _ต |
ยู+0009 |
แท็บแนวนอน |
| \วี |
ยู+000บี |
แท็บแนวตั้ง |
| - |
ยู+005ซี |
แบ็กสแลช |
| - |
ยู+0027 |
เครื่องหมายอะพอสทรอฟี |
| - |
ยู+0022 |
เครื่องหมายคำพูดคู่ (ใช้ได้เฉพาะในสตริงอักขระเท่านั้น) |
ตัวอย่างเช่น:
//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))
}
ผลลัพธ์:
Rune 1: B; Unicode: U+0042; Type: int32
Rune 2: g; Unicode: U+0067; Type: int32
Rune 3: Unicode: U+0007; Type: int32
ตัวอย่างที่ 2:

ผลลัพธ์:
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