自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Golang中的Rune類型到底是什么?

開源
在看一些開源項目的源代碼時,經??吹絉une類型的使用,本文就詳細說下Rune類型。

rune類型

在看一些開源項目的源代碼時,經常看到rune類型的使用,本文就詳細說下rune類型,首先看下golang源碼的注釋:

// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.
type rune = int32

可以看出rune類型是int32類型的別名,等價于int32,之所以定義rune類型是因為按照慣例用來區(qū)分字符值和整數(shù)值用的。 rune類型通常用于表示一個unicode字符的碼點,也就是unicode編碼中的字符編碼,支持 Unicode 的 1,114,112 個碼點。

使用方法

定義一個rune類型的變量可以使用單引號,例如:

var r1 rune = 'A'
var r2 rune = '你'
var r3 rune = '\U0001F600' // 笑臉表情的 Unicode 碼點是 U+1F600

可以使用 %c 來格式化rune類型的變量,例如:

fmt.Printf("r1: %c\n", r1)  // 輸出: r1: A
fmt.Printf("r2: %c\n", r2) // 輸出: r2: 你
fmt.Printf("r3: %c\n", r3) // 輸出: r3:

在字符串中使用rune類型可以表示一個Unicode 字符,例如:

str := "你好,世界!"
r := []rune(str)
fmt.Printf("%c\n", r[0]) // 輸出: 你

因為rune是32位的整型,當把一個rune變量賦值給一個int類型的變量時需要進行類型轉換:

var r rune = 'A'
var i int = int(r)

計算字符串長度

眾所周知,一個中文字符在unicode編碼中占2個字節(jié),而在utf-8編碼中占3個字節(jié)。golang默認編碼是utf-8,如果想得到一個字符串的長度而不是字符串占用的字節(jié)長度的場景,就需要使用rune類型:

package main

import (
"fmt"
"unicode/utf8"
)

func main() {
var str = "hello,世界"
//計算占用的字節(jié)數(shù)
fmt.Println("字節(jié)數(shù):", len(str))

//以下兩種都可以得到str的字符數(shù)
//unicode/utf8包提供了獲取字符數(shù)的方法
fmt.Println("字符數(shù):", utf8.RuneCountInString(str))
//通過rune類型處理unicode字符方式
fmt.Println("字符數(shù):", len([]rune(str)))
}

輸出結果:

字節(jié)數(shù): 12
字符數(shù): 8
字符數(shù): 8
責任編輯:姜華 來源: 今日頭條
相關推薦

2021-09-01 23:29:37

Golang語言gRPC

2009-06-09 22:11:44

JavaScriptObject

2023-10-11 08:29:54

volatileJava原子性

2017-07-13 10:43:52

CNNmaxpool池化

2011-04-27 09:30:48

企業(yè)架構

2022-10-08 00:00:00

Spring數(shù)據(jù)庫項目

2020-03-05 10:28:19

MySQLMRR磁盤讀

2010-11-01 01:25:36

Windows NT

2020-09-22 08:22:28

快充

2020-09-27 06:53:57

MavenCDNwrapper

2020-10-14 06:22:14

UWB技術感知

2024-06-07 10:05:31

2019-10-30 10:13:15

區(qū)塊鏈技術支付寶

2013-06-09 09:47:31

.NetPDBPDB文件

2021-09-03 09:12:09

Linux中斷軟件

2010-04-22 14:14:29

Live-USB

2020-08-04 14:20:20

數(shù)據(jù)湖Hadoop數(shù)據(jù)倉庫

2021-01-21 21:24:34

DevOps開發(fā)工具

2023-07-12 15:32:49

人工智能AI

2024-02-04 00:01:00

云原生技術容器
點贊
收藏

51CTO技術棧公眾號