日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GO教程:Go語言二進制文件的讀寫操作

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

公司主營業(yè)務:成都網(wǎng)站建設、網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出寬城免費做網(wǎng)站回饋大家。

如果 typeId-value 對的 typeId 是預先定義好的(例如 bool、int 和 string 等),則這些 typeId-typeSpecification 對可以省略。否則就用類型對來描述一個自定義類型(如一個自定義的結構體)。類型對和值對之間的 typeId 沒有區(qū)別。

正如我們將看到的,我們無需了解其內部結構就可以使用 gob 格式, 因為 encoding/gob 包會在幕后為我們打理好一切底層細節(jié)。

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

寫Go語言二進制文件

下面通過一個簡單的示例來演示一下Go語言是如何生成一個二進制文件的,代碼如下所示:

package main

import (
    "encoding/gob"
    "fmt"
    "os"
)

func main() {
    info := "http://c.biancheng.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("編碼錯誤", err.Error())
        return
    } else {
        fmt.Println("編碼成功")
    }
}

運行上面的代碼會在當前目錄下生成一個 output.gob 文件,文件內容如下所示:

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

讀Go語言二進制文件

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

package main

import (
    "encoding/gob"
    "fmt"
    "os"
)

func main() {
    file, err := os.Open("./output.gob")
    if err != nil {
        fmt.Println("文件打開失敗", 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)
    }
}

運行結果如下:

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


本文題目:創(chuàng)新互聯(lián)GO教程:Go語言二進制文件的讀寫操作
瀏覽路徑:http://m.5511xx.com/article/djsdoip.html