首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gob中的字符串编码/解码

gob中的字符串编码/解码
EN

Stack Overflow用户
提问于 2021-05-13 19:21:21
回答 4查看 581关注 0票数 0

我跟踪了https://blog.golang.org/gob链接。并编写了一个示例,其中结构包含所有字符串数据。这是我的样本:

代码语言:javascript
复制
package main

import (
    "bytes"
    "encoding/gob"
    "fmt"
    "log"
)

type P struct {
    X string
    a string
    Name    string

}

type Q struct {
    X string
    a string
    Name string

}

func main() {
    // Initialize the encoder and decoder.  Normally enc and dec would be
    // bound to network connections and the encoder and decoder would
    // run in different processes.
    var network bytes.Buffer        // Stand-in for a network connection
    enc := gob.NewEncoder(&network) // Will write to network.
    dec := gob.NewDecoder(&network) // Will read from network.
    // Encode (send) the value.
    err := enc.Encode(P{"My string", "Pythagoras","a string"})
    if err != nil {
        log.Fatal("encode error:", err)
    }
    // Decode (receive) the value.
    var q Q
    err = dec.Decode(&q)
    if err != nil {
        log.Fatal("decode error:", err)
    }
    fmt.Println(q.X,q.Name)
    fmt.Println(q.a)
}

金刚:https://play.golang.org/p/3aj0hBG7wMj

预期产出:

代码语言:javascript
复制
My string a string
Pythagoras

实际产出

代码语言:javascript
复制
My string a string

我不知道为什么输出中缺少"pythagoras“字符串。当我有多个字符串、结构中的整数数据并使用gob处理时,我观察到了类似的行为。

字符串是如何处理的?我的节目有什么问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-05-13 19:28:18

您的a字段未导出(名称以小写字母开头)。Go的反射以及JSON、YAML和gob这样的封送处理程序不能访问未导出的struct字段,只能访问导出的结构字段。

票数 2
EN

Stack Overflow用户

发布于 2021-05-13 19:28:09

gob编解码器忽略未出口字段。通过将字段名中的第一个字母大写来导出该字段:

代码语言:javascript
复制
type P struct {
    X string
    A string
    Name string
}

Q类型进行类似的更改。

在操场上跑

票数 2
EN

Stack Overflow用户

发布于 2021-05-13 19:28:45

您将值"Pythagoras"分配给名称的字段必须导出。

代码语言:javascript
复制
type P struct {
    X string
    a string // --> change name to A
    Name    string
}

type Q struct {
    X string
    a string // --> change name to A
    Name string
}

在您链接的博客文章中,它被记录下来(Ctrl+F用于“导出”):

只对导出的字段进行编码和解码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67525026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档