偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

開源
在看一些開源項(xiàng)目的源代碼時(shí),經(jīng)??吹絉une類型的使用,本文就詳細(xì)說下Rune類型。

rune類型

在看一些開源項(xiàng)目的源代碼時(shí),經(jīng)??吹絩une類型的使用,本文就詳細(xì)說下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類型的別名,等價(jià)于int32,之所以定義rune類型是因?yàn)榘凑諔T例用來區(qū)分字符值和整數(shù)值用的。 rune類型通常用于表示一個(gè)unicode字符的碼點(diǎn),也就是unicode編碼中的字符編碼,支持 Unicode 的 1,114,112 個(gè)碼點(diǎn)。

使用方法

定義一個(gè)rune類型的變量可以使用單引號(hào),例如:

var r1 rune = 'A'
var r2 rune = '你'
var r3 rune = '\U0001F600' // 笑臉表情的 Unicode 碼點(diǎn)是 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類型可以表示一個(gè)Unicode 字符,例如:

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

因?yàn)閞une是32位的整型,當(dāng)把一個(gè)rune變量賦值給一個(gè)int類型的變量時(shí)需要進(jìn)行類型轉(zhuǎn)換:

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

計(jì)算字符串長度

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

package main

import (
"fmt"
"unicode/utf8"
)

func main() {
var str = "hello,世界"
//計(jì)算占用的字節(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é)果:

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

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池化

2022-10-08 00:00:00

Spring數(shù)據(jù)庫項(xiàng)目

2020-03-05 10:28:19

MySQLMRR磁盤讀

2011-04-27 09:30:48

企業(yè)架構(gòu)

2020-10-14 06:22:14

UWB技術(shù)感知

2020-09-27 06:53:57

MavenCDNwrapper

2010-11-01 01:25:36

Windows NT

2020-09-22 08:22:28

快充

2024-06-07 10:05:31

2021-09-03 09:12:09

Linux中斷軟件

2020-08-04 14:20:20

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

2019-10-30 10:13:15

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

2010-04-22 14:14:29

Live-USB

2013-06-09 09:47:31

.NetPDBPDB文件

2021-07-07 05:07:15

JDKIterator迭代器

2021-01-21 21:24:34

DevOps開發(fā)工具

2024-02-04 00:01:00

云原生技術(shù)容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)