可能是編碼的問(wèn)題吧,go語(yǔ)言默認(rèn)用utf8編碼,而windows的命令行程序可能用的是gbk,
10年積累的成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有松原免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
包 utf-8 實(shí)現(xiàn)的功能和常量用于文章utf8編碼,包含runes和utf8字節(jié)序列的轉(zhuǎn)換功能.在unicode中,一個(gè)中文占兩個(gè)字節(jié),utf-8中一個(gè)中文占三個(gè)字節(jié),golang默認(rèn)的編碼是utf-8編碼,因此默認(rèn)一個(gè)中文占三個(gè)字節(jié),但是golang中的字符串底層實(shí)際上是一個(gè)byte數(shù)組.
Output:
RuneSelf該值的字節(jié)碼值為128,在判斷是否是常規(guī)的ascii碼是使用。hicb字節(jié)碼值為191. FF 的對(duì)應(yīng)的字節(jié)碼為255。
計(jì)算字符串中的rune數(shù)量,原理:首先取出字符串的碼值,然后判斷是不是個(gè)小于128的,如果是小于則直接continue.rune個(gè)數(shù)++.
如果是個(gè)十六進(jìn)制f1.的則是無(wú)效字符,直接continue.rune個(gè)數(shù)++,也就是說(shuō)一個(gè)無(wú)效的字符也當(dāng)成一個(gè)字長(zhǎng)為1的rune.如果字符的碼值在first列表中的值和7按位的結(jié)果為其字長(zhǎng),比如上面示例中的 鋼 。其字長(zhǎng)為三位,第一位的值為 233 .二進(jìn)制形式為 11101001 ;與7按位與后的值為0.從acceptRanges中取出的結(jié)果為{locb, hicb}。也就是標(biāo)識(shí) ox80 到 0xbf 之間的值。而結(jié)果n也就是直接size+3跳過(guò)3個(gè)字節(jié)后,rune個(gè)數(shù)++。其他函數(shù)的處理流程差不多,不再過(guò)多敘述。
示例:
ValidString返回值表明參數(shù)字符串是否是一個(gè)合法的可utf8編碼的字符串。
RuneCount返回參數(shù)中包含的rune數(shù)量,第一個(gè)例子中將 utf8.RuneCountInString ,改成該方法調(diào)用,返回的結(jié)果相同。錯(cuò)誤的和短的被當(dāng)成一個(gè)長(zhǎng)一字節(jié)的rune.單個(gè)字符 H 就表示一個(gè)長(zhǎng)度為1字節(jié)的rune.
該函數(shù)標(biāo)識(shí)參數(shù)是否以一個(gè)可編碼的rune開(kāi)頭,上面的例子中,因?yàn)樽址且砸粋€(gè)ascii碼值在0-127內(nèi)的字符開(kāi)頭,所以在執(zhí)行
first[p[0]] 時(shí),取到的是 p[0] 是72,在first列表中,127之前的值都相同都為 0xF0 ,十進(jìn)制標(biāo)識(shí)為240,與7按位與后值為0,所以,直接返回 true .
和FullRune類似,只是參數(shù)為字符串形式
本文主要介紹了Go語(yǔ)言中文件讀寫的相關(guān)操作。
文件是什么?
計(jì)算機(jī)中的文件是存儲(chǔ)在外部介質(zhì)(通常是磁盤)上的數(shù)據(jù)集合,文件分為文本文件和二進(jìn)制文件。
os.Open() 函數(shù)能夠打開(kāi)一個(gè)文件,返回一個(gè) *File 和一個(gè) err 。對(duì)得到的文件實(shí)例調(diào)用 close() 方法能夠關(guān)閉文件。
為了防止文件忘記關(guān)閉,我們通常使用defer注冊(cè)文件關(guān)閉語(yǔ)句。
Read方法定義如下:
它接收一個(gè)字節(jié)切片,返回讀取的字節(jié)數(shù)和可能的具體錯(cuò)誤,讀到文件末尾時(shí)會(huì)返回 0 和 io.EOF 。 舉個(gè)例子:
使用for循環(huán)讀取文件中的所有數(shù)據(jù)。
bufio是在file的基礎(chǔ)上封裝了一層API,支持更多的功能。
io/ioutil 包的 ReadFile 方法能夠讀取完整的文件,只需要將文件名作為參數(shù)傳入。
os.OpenFile() 函數(shù)能夠以指定模式打開(kāi)文件,從而實(shí)現(xiàn)文件寫入相關(guān)功能。
其中:
name :要打開(kāi)的文件名 flag :打開(kāi)文件的模式。 模式有以下幾種:
perm :文件權(quán)限,一個(gè)八進(jìn)制數(shù)。r(讀)04,w(寫)02,x(執(zhí)行)01。
這個(gè)代碼是你自己寫的吧!
你的097是有問(wèn)題的,我猜你是打算用它來(lái)表示8進(jìn)制是吧,但是8進(jìn)制最大的數(shù)是7不會(huì)出現(xiàn)9。所以你這個(gè)沒(méi)有輸出結(jié)果,會(huì)報(bào)錯(cuò)。
%d即使按照10進(jìn)制輸出,所以第一個(gè)應(yīng)該是97輸出,第二個(gè)按照你的錯(cuò)誤輸入來(lái)算應(yīng)該是9×8+7=79,第三個(gè)16進(jìn)制為9×16+7=151。但是第二個(gè)絕對(duì)是錯(cuò)誤,程序不會(huì)通過(guò)編譯。