亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go語言二進制文件的讀寫操作

 更新時間:2023年04月03日 10:52:50   作者:C語言中文網  
本文主要介紹了Go語言二進制文件的讀寫操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

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

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

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

寫Go語言二進制文件

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

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("編碼錯誤", 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 數據和寫一樣簡單,示例代碼如下:

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://jb51.net/golang/

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

相關文章

  • Go語言基礎入門應用簡介及常用命令

    Go語言基礎入門應用簡介及常用命令

    這篇文章主要為大家介紹了Go語言基礎入門應用簡介及常用命令,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • golang日志框架之logrus的使用

    golang日志框架之logrus的使用

    這篇文章主要介紹了golang日志框架之logrus的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • go build和go install的區(qū)別介紹

    go build和go install的區(qū)別介紹

    這篇文章主要介紹了go build和go install的區(qū)別介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • GoLang協(xié)程庫libtask學習筆記

    GoLang協(xié)程庫libtask學習筆記

    libtask一個C語言的協(xié)程庫,是go語言的前身很早期的原型. 測試機器是我的mac air 安裝的centos虛擬機(只有一個核), 代碼沒有采用任何優(yōu)化,只是使用默認配置
    2022-12-12
  • Golang并發(fā)編程之GMP模型詳解

    Golang并發(fā)編程之GMP模型詳解

    傳統(tǒng)的并發(fā)編程模型是基于線程和共享內存的同步訪問控制的,共享數據受鎖的保護,線程將爭奪這些鎖以訪問數據。本文將介紹Go并發(fā)編程中的GMP模型,感興趣的可以了解一下
    2023-03-03
  • golang之log rotate詳解

    golang之log rotate詳解

    下面小編就為大家?guī)硪黄猤olang之log rotate詳解。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Go位集合相關操作bitset庫安裝使用

    Go位集合相關操作bitset庫安裝使用

    這篇文章主要為大家介紹了Go位集合相關操作bitset庫安裝使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Golang WaitGroup實現原理解析

    Golang WaitGroup實現原理解析

    WaitGroup是Golang并發(fā)的兩種方式之一,一個是Channel,另一個是WaitGroup,下面這篇文章主要給大家介紹了關于golang基礎之waitgroup用法以及使用要點的相關資料,需要的朋友可以參考下
    2023-02-02
  • 一文搞懂如何實現Go 超時控制

    一文搞懂如何實現Go 超時控制

    這篇文章主要介紹了一文搞懂如何實現Go 超時控制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • golang利用不到20行代碼實現路由調度詳解

    golang利用不到20行代碼實現路由調度詳解

    這篇文章主要給大家介紹了關于golang利用不到20行代碼實現路由調度的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08

最新評論