最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言二進(jìn)制文件的讀寫操作

 更新時(shí)間:2023年04月03日 10:52:50   作者:C語(yǔ)言中文網(wǎng)  
本文主要介紹了Go語(yǔ)言二進(jìn)制文件的讀寫操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Go語(yǔ)言的二進(jìn)制(gob)格式是一個(gè)自描述的二進(jìn)制序列。從其內(nèi)部表示來(lái)看,Go語(yǔ)言的二進(jìn)制格式由一個(gè) 0 塊或者更多塊的序列組成,其中的每一塊都包含一個(gè)字節(jié)數(shù),一個(gè)由 0 個(gè)或者多個(gè) typeId-typeSpecification 對(duì)組成的序列,以及一個(gè) typeId-value 對(duì)。

如果 typeId-value 對(duì)的 typeId 是預(yù)先定義好的(例如 bool、int 和 string 等),則這些 typeId-typeSpecification 對(duì)可以省略。否則就用類型對(duì)來(lái)描述一個(gè)自定義類型(如一個(gè)自定義的結(jié)構(gòu)體)。類型對(duì)和值對(duì)之間的 typeId 沒(méi)有區(qū)別。

正如我們將看到的,我們無(wú)需了解其內(nèi)部結(jié)構(gòu)就可以使用 gob 格式, 因?yàn)?encoding/gob 包會(huì)在幕后為我們打理好一切底層細(xì)節(jié)。

Go語(yǔ)言中的 encoding/gob 包也提供了與 encoding/json 包一樣的編碼解碼功能,并且容易使用。通常而言如果對(duì)肉眼可讀性不做要求,gob 格式是Go語(yǔ)言上用于文件存儲(chǔ)和網(wǎng)絡(luò)傳輸最為方便的格式。

寫Go語(yǔ)言二進(jìn)制文件

下面通過(guò)一個(gè)簡(jiǎn)單的示例來(lái)演示一下Go語(yǔ)言是如何生成一個(gè)二進(jìn)制文件的,代碼如下所示:

package main
import (
    "encoding/gob"
    "fmt"
    "os"
)
func main() {
    info := "http://jb51.net/golang/"
    file, err := os.Create("./output.gob")
    if err != nil {
        fmt.Println("文件創(chuàng)建失敗", err.Error())
        return
    }
    defer file.Close()
    encoder := gob.NewEncoder(file)
    err = encoder.Encode(info)
    if err != nil {
        fmt.Println("編碼錯(cuò)誤", err.Error())
        return
    } else {
        fmt.Println("編碼成功")
    }
}

運(yùn)行上面的代碼會(huì)在當(dāng)前目錄下生成一個(gè) output.gob 文件,文件內(nèi)容如下所示:

210c 001e 6874 7470 3a2f 2f63 2e62 6961
6e63 6865 6e67 2e6e 6574 2f67 6f6c 616e
672f 

讀Go語(yǔ)言二進(jìn)制文件

讀 gob 數(shù)據(jù)和寫一樣簡(jiǎn)單,示例代碼如下:

package main
import (
    "encoding/gob"
    "fmt"
    "os"
)
func main() {
    file, err := os.Open("./output.gob")
    if err != nil {
        fmt.Println("文件打開(kāi)失敗", err.Error())
        return
    }
    defer file.Close()
    decoder := gob.NewDecoder(file)
    info := ""
    err = decoder.Decode(&info)
    if err != nil {
        fmt.Println("解碼失敗", err.Error())
    } else {
        fmt.Println("解碼成功")
        fmt.Println(info)
    }
}

運(yùn)行結(jié)果如下:

go run main.go
解碼成功http://jb51.net/golang/

到此這篇關(guān)于Go語(yǔ)言二進(jìn)制文件的讀寫操作的文章就介紹到這了,更多相關(guān)Go語(yǔ)言二進(jìn)制文件讀寫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang如何部署到服務(wù)器及應(yīng)注意問(wèn)題解析

    golang如何部署到服務(wù)器及應(yīng)注意問(wèn)題解析

    這篇文章主要為大家介紹了golang如何部署到服務(wù)器及應(yīng)注意問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • go解析svn log生成的xml格式的文件

    go解析svn log生成的xml格式的文件

    這篇文章主要介紹了go解析svn log生成的xml格式的文件的方法,非常的實(shí)用,有需要的小伙伴可以參考下。
    2015-04-04
  • 使用client go實(shí)現(xiàn)自定義控制器的方法

    使用client go實(shí)現(xiàn)自定義控制器的方法

    本文我們來(lái)使用client-go實(shí)現(xiàn)一個(gè)自定義控制器,通過(guò)判斷service的Annotations屬性是否包含ingress/http,如果包含則創(chuàng)建ingress,如果不包含則不創(chuàng)建,對(duì)client go自定義控制器相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-05-05
  • Golang實(shí)現(xiàn)IO操作

    Golang實(shí)現(xiàn)IO操作

    本文主要介紹了Golang實(shí)現(xiàn)IO操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • golang 如何用反射reflect操作結(jié)構(gòu)體

    golang 如何用反射reflect操作結(jié)構(gòu)體

    這篇文章主要介紹了golang 用反射reflect操作結(jié)構(gòu)體的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Go中匿名結(jié)構(gòu)體的使用技巧

    Go中匿名結(jié)構(gòu)體的使用技巧

    這篇文章主要給大家分享一個(gè)使用匿名結(jié)構(gòu)體,提升Go編程效率的小技巧,沒(méi)什么技術(shù)深度,屬于在日常寫代碼過(guò)程中積累下來(lái)的一個(gè)提升自己編程效率的小經(jīng)驗(yàn)
    2023-08-08
  • 一文帶你了解Golang中類型轉(zhuǎn)換庫(kù)cast的使用

    一文帶你了解Golang中類型轉(zhuǎn)換庫(kù)cast的使用

    你是否在使用 Go 的過(guò)程中因?yàn)轭愋娃D(zhuǎn)換的繁瑣而苦惱過(guò)?你是否覺(jué)得 Go 語(yǔ)言中的類型斷言可能會(huì) panic 而對(duì)自己寫的代碼有那么一點(diǎn)點(diǎn)不放心?本文就為大家推薦一個(gè)用于類型轉(zhuǎn)換的第三方庫(kù) cast 絕對(duì)是一個(gè)值得嘗試的選擇
    2023-02-02
  • Go語(yǔ)言中實(shí)現(xiàn)enum枚舉的方法詳解

    Go語(yǔ)言中實(shí)現(xiàn)enum枚舉的方法詳解

    枚舉,即?enum,可用于表示一組范圍固定的值,它能助我們寫出清晰、安全的代碼,那么你是否了解過(guò)?Go?中的枚舉呢?下面就跟隨小編一起來(lái)學(xué)習(xí)一下Go語(yǔ)言中實(shí)現(xiàn)enum枚舉的常用方法吧
    2024-02-02
  • Golang中omitempty關(guān)鍵字的具體實(shí)現(xiàn)

    Golang中omitempty關(guān)鍵字的具體實(shí)現(xiàn)

    本文主要介紹了Golang中omitempty關(guān)鍵字的具體實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Go語(yǔ)言單元測(cè)試基礎(chǔ)從入門到放棄

    Go語(yǔ)言單元測(cè)試基礎(chǔ)從入門到放棄

    這篇文章主要介紹了Go單元測(cè)試基礎(chǔ)從入門到放棄為大家開(kāi)啟Go語(yǔ)言單元測(cè)試第一篇章,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評(píng)論

广宗县| 沙湾县| 天水市| 林甸县| 夏河县| 抚顺市| 新建县| 中卫市| 沽源县| 平乐县| 同仁县| 墨竹工卡县| 庐江县| 鸡西市| 江西省| 宁都县| 青州市| 漳平市| 华安县| 通州市| 绥芬河市| 衢州市| 棋牌| 隆德县| 巴塘县| 新安县| 哈尔滨市| 富民县| 财经| 美姑县| 新河县| 同江市| 湘潭县| 镶黄旗| 鄄城县| 凉城县| 长海县| 武平县| 浠水县| 峨边| 准格尔旗|