日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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類型是因為按照慣例用來區分字符值和整數值用的。 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: %cn", r1)  // 輸出: r1: A
fmt.Printf("r2: %cn", r2)  // 輸出: r2: 你
fmt.Printf("r3: %cn", r3)  // 輸出: r3: 

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

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

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

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

計算字符串長度

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

package main

import (
   "fmt"
   "unicode/utf8"
)

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

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

輸出結果:

字節數: 12
字符數: 8
字符數: 8

分享到:
標簽:Golang
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定