網站首頁 編程語言 正文
fmt的輸出輸入
?
字符類型的基本使用
Golang中沒有專門的字符類型,如果要存儲單個字符,一般使用byte來保存。
字符串就是一串固定長度的字符連接起來的字符序列。Go的字符串是有單個字節連接起來的。也就是說對于傳統的字符串是由字符組成的,而Go的字符串不同,它是由字節組成的。
Golang限定字符或者字符串一共三種引號,單引號(’’),雙引號("") 以及反引號(``)。反引號就是標準鍵盤“Esc”按鈕下面的那個鍵。?
- 單引號,表示byte類型或rune類型,對應 uint8和int32類型,默認是 rune 類型。byte用來強調數據是raw data,而不是數字;而rune用來表示Unicode的code point。
- 雙引號,才是字符串,實際上是字符數組。可以用索引號訪問某字節,也可以用len()函數來獲取字符串所占的字節長度。
- 反引號,表示字符串字面量,但不支持任何轉義序列。字面量 raw literal string 的意思是,你定義時寫的啥樣,它就啥樣,你有換行,它就換行。你寫轉義字符,它也就展示轉義字符。
package main
import (
"fmt"
)
//字符類型的使用
func main(){
var c1 byte = 'a'
//當我們直接輸出byte值,就是輸出了字符對應的碼值(ASCII碼)
fmt.Println(c1) //97
fmt.Printf("%c, %d\n", c1, c1)//a, 97
// var c2 byte= '北' //0~255
// fmt.Printf("c2 = %c", c2)//(overflows溢出)
var c3 int= '北' //使用int
fmt.Printf("c3 = %c c3對應的碼值是%d", c3,c3)//c3 = 北 c3對應的碼值是21271
}
如果我們保存的字符在ASCII表中,比如【0~1,a~z,A~Z...】直接可以保存到byte
如果我們保存的字符對應碼值大于255,這時我們可以考慮使用int類型保存
如果我們需要按照字符的方式輸出,這時我們需要格式化輸出即fmt.Printf("%c",c)
字符類型的使用細節?
(1)字符常量是用單引號('')括起來的單個字符。例如:var c1 byte = 'a'
(2)Go中允許使用轉義字符“\”來將其后的字符轉變為特殊字符型常量。例如:var c3 char = '\n'
(3)Go語言的字符使用utf-8編碼,英文字母1個字節,漢字3個字節
(4)在Go中,字符的本質是一個整數,直接輸出時,是該字符對應的utf-8編碼的碼值
(5)可以直接給某個變量賦一個數字,然后按格式化輸出時%c,會輸出該數字對應的unicode字符
var c4 int = 22269
fmt.Printf("%c",c4) //國
(6)字符類型是可以進行運算的,相當于一個整數,因為它都對應有Unicode碼?
var a = 10 + 'a'
fmt.Println(a) //107
fmt.Printf("%c",a) //k
?字符類型的本質
(1)字符型存儲到計算機中,需要將字符對應的碼值(整數)找出來
? ? ? ? 存儲:字符 ——》對應碼值 ——》? 二進制 ——》 存儲
? ? ? ? 讀取:二進制 ——》 碼值? ?——》? 字符? ? ——》? 讀取
(2)字符和碼值的對應關系是通過字符編碼表決定的
(3)Go語言的編碼都統一成了utf-8。非常方便,很統一,再也沒有編碼亂碼的困擾了。
UTF-8 和 Unicode 有何區別?
Unicode 與 ASCII 類似,都是一種字符集。
字符集為每個字符分配一個唯一的 ID,我們使用到的所有字符在 Unicode 字符集中都有一個唯一的 ID,例如上面例子中的 a 在 Unicode 與 ASCII 中的編碼都是 97。漢字“你”在 Unicode 中的編碼為 20320,在不同國家的字符集中,字符所對應的 ID 也會不同。而無論任何情況下,Unicode 中的字符的 ID 都是不會變化的。
UTF-8 是編碼規則,將 Unicode 中字符的 ID 以某種方式進行編碼,UTF-8 的是一種變長編碼規則,從 1 到 4 個字節不等。編碼規則如下:
- 0xxxxxx 表示文字符號 0~127,兼容 ASCII 字符集。
- 從 128 到 0x10ffff 表示其他字符。 根據這個規則,拉丁文語系的字符編碼一般情況下每個字符占用一個字節,而中文每個字符占用 3 個字節。
廣義的 Unicode 指的是一個標準,它定義了字符集及編碼規則,即 Unicode 字符集和 UTF-8、UTF-16 編碼等?
原文鏈接:https://blog.csdn.net/qq_37899792/article/details/124094601
相關推薦
- 2023-02-17 pytorch中nn.Flatten()函數詳解及示例_python
- 2023-03-28 Unity3D開發之獲取所有的子對象的方法詳解_C#教程
- 2022-03-27 詳解OpenCV中簡單的鼠標事件處理_python
- 2022-10-18 shell腳本實現定時刪除文件或文件夾_linux shell
- 2022-03-24 Qt開發實現跨窗口信號槽通信_C 語言
- 2023-01-02 正確在Flutter中添加webview實現詳解_Android
- 2022-07-29 Golang?統計字符串中數字字母數量的實現方法_Golang
- 2022-04-25 ASP.NET?Core中Razor頁面與MVC區別介紹_實用技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支