<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                在學習golang基礎的時候,發現有個叫rune的的數據類型,當時不理解這個類型的意義。 查詢,官方的解釋如下: ``` // 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. //int32的別名,幾乎在所有方面等同于int32 //它用來區分字符值和整數值 type rune = int32 ``` 這樣可能還是對rune的作用與意義比較懵逼,我們通過一個簡單的Demo來看下rune的作用。先來看下下面這塊代碼執行結果是什么? ``` package main import ( "fmt" ) func main() { s := "hello 你好" // 8 = 5個字符 + 1個空格 + 2個漢字 fmt.Println("len(s):", len(s)) // len(s): 12 } ``` > 我們猜測結果應該是:`8 = 5個字符1個空格2個漢字`。世界打印結果為:`len(s): 12` #### 分析原因 > 1、golang中string底層是通過byte數組實現的。 > 2、中文字符在unicode下占2個字節, > 3、在utf-8編碼下占3個字節, > 4、而golang默認編碼正好是utf-8。 那么?如果我們預期想得到一個字符串的長度,而不是字符串底層占得字節長度,該怎么辦呢??? ``` package main import ( "fmt" "unicode/utf8" ) func main() { var str = "hello 你好" // golang中string底層是通過byte數組實現的 // 直接求len 實際是在按字節長度計算 所以一個漢字占3個字節算了3個長度 fmt.Println("len(str):", len(str)) //以下兩種都可以得到str的字符串長度 //golang中的unicode/utf8包提供了用utf-8獲取長度的方法 fmt.Println("RuneCountInString:", utf8.RuneCountInString(str)) //通過rune類型處理unicode字符 fmt.Println("rune:", len([]rune(str))) } ``` 打印結果 ``` len(str): 12 RuneCountInString: 8 rune: 8 ``` golang中有一個`byte`數據類型與`rune`相似,它們都是用來表示字符類型的變量類型。它們的不同在于: * `byte` 等同于`int8`,常用來處理`ascii`字符 * `rune` 等同于`int32`,常用來處理`unicode`或`utf-8`字符
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看