我的编程空间,编程开发者的网络收藏夹
学习永远不晚

解组自定义字节类型返回零值

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

解组自定义字节类型返回零值

有志者,事竟成!如果你在学习Golang,那么本文《解组自定义字节类型返回零值》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我正在尝试解组类型为 [32]byte 的自定义/别名哈希,但结果返回零值。以下代码只是我想要做的事情的一个片段。在此代码片段中,我生成 json 只是为了给出一个示例,但在我的实际代码库中,它将从另一个源生成和读取。这是片段:

package main

import (
    "os"
    "fmt"
    "crypto/sha256"
    "encoding/hex"
    "encoding/json"
 )

 type Block struct {
     Key Hash `json:"hash"`
 }

 type Hash [32]byte

 func (h Hash) MarshalText() ([]byte, error) {
     return []byte(hex.EncodeToString(h[:])), nil
 }

 func (h Hash) UnmarshalText(data []byte) error {
     _, err := hex.Decode(h[:], data)
     return err
 }

 func main() {
     b := Block{sha256.Sum256([]byte("afasdfasfasfjiuoiuioupio"))}

     j, _ := json.Marshal(b)

     var unmarshalled Block
     err := json.Unmarshal(j, &unmarshalled)
     if err != nil {
         os.Exit(1)
     }

     fmt.Printf("%x\n", unmarshalled.Key)
     // prints out 0000000000000000000000000000000000000000000000000000000000000000
  }


解决方案


unmarshaltext 方法修改的是值 h,而不是调用者中的值。使用指针接收器来修改调用者的值。

func (h *Hash) UnmarshalText(data []byte) error {
    _, err := hex.Decode(h[:], data)
    return err
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

解组自定义字节类型返回零值

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

解组自定义字节类型返回零值

有志者,事竟成!如果你在学习Golang,那么本文《解组自定义字节类型返回零值》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~问题内容我正在尝试解组类型为 [32]byte 的自
解组自定义字节类型返回零值
2024-04-04

golang如何自定义返回值类型?

go 语言中可通过创建自定义类型定义函数返回值,增强灵活性,允许返回特定格式或结构的数据。通过 syntax:func functionname() (returntype1, returntype2, ..., returntypen)
golang如何自定义返回值类型?
2024-04-23

C++ 函数使用类型别名定义返回值类型

问题: c++++中如何使用类型别名定义函数返回值类型?答案:使用 using 关键字声明类型别名,将原始类型命名为新类型别名。在函数签名中使用类型别名来指定返回值类型。使用类型别名可以缩短返回值名称,提高代码的可读性和维护性。C++ 函数
C++ 函数使用类型别名定义返回值类型
2024-04-14

C++中的自定义函数返回类型

这篇文章主要介绍了C++中的自定义函数返回类型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

使用类型修饰符定义 C++ 函数返回值类型

c++++ 函数返回值类型使用类型修饰符指定,其中:void 表示没有返回值;int、float、double 等表示返回基本数据类型;引用类型 (&) 表示返回对数据的引用;指针类型 (*) 表示返回指向数据的指针。使用类型修饰符定义 C
使用类型修饰符定义 C++ 函数返回值类型
2024-04-14

HCL 解组自定义类型

一分耕耘,一分收获!既然都打开这篇《HCL 解组自定义类型》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家
HCL 解组自定义类型
2024-04-05

C++ 函数返回值速查:字符类型含义

C++ 函数返回值速查:字符类型含义字符串类型类型含义std::string标准 C++ 字符串类型std::u16stringUnicode 字符串类型,使用 16 位字符std::u32stringUnicode 字符串类型,
C++ 函数返回值速查:字符类型含义
2024-05-04

PHP扩展开发:如何定义自定义函数的入参和返回值类型?

在 php 扩展开发中,定义自定义函数的入参和返回值类型至关重要,具体步骤包括:定义类型限定符:void 无返回值,基本类型使用 int 等,对象类型使用 arrayobject,任意类型使用 mixed。定义入参类型:使用 zend_ar
PHP扩展开发:如何定义自定义函数的入参和返回值类型?
2024-05-15

Gorm 在自定义字符串类型上返回扫描仪错误

php小编香蕉介绍:在Gorm中,当你尝试在自定义的字符串类型上进行扫描操作时,可能会遇到错误。这个问题可能会导致扫描仪无法正确解析字符串,从而导致程序出错。这是因为Gorm默认使用`Scan`方法来扫描字符串类型的字段,但对于自定义的字符
Gorm 在自定义字符串类型上返回扫描仪错误
2024-02-11

C++ lambda 表达式的返回值类型如何定义?

在 c++++ 中,lambda 表达式的返回值类型通过 ->return-type 指定,允许明确定义 lambda 的返回值。通过指定返回值类型,可以增强代码的可读性并避免编译器自动推断类型带来的潜在错误。C++ Lambda 表达式的
C++ lambda 表达式的返回值类型如何定义?
2024-04-17

C++ 函数中是如何定义返回值类型的?

c++++ 函数中返回值类型的定义在函数签名的括号前。它表示函数返回的数据类型:return_type function_name(parameter_list)例如,如果函数返回整数和并计算两个数字,则语法为:int add(int nu
C++ 函数中是如何定义返回值类型的?
2024-04-13

C++ 函数的返回值:类型、含义全解析

c++++函数的返回值类型定义了函数调用的结果,可以是基本类型(如int)或用户定义类型(如类)。返回值的含义取决于函数的目的,可以表示成功/失败、操作结果或其他信息。C++ 函数的返回值:类型、含义全解析在 C++ 中,函数的返回值是通
C++ 函数的返回值:类型、含义全解析
2024-04-30

C++ 函数返回自定义类型时有什么要求?

c++++ 函数可以返回自定义类型,满足如下要求:类型完整定义。默认构造函数。值类型需要复制构造函数。C++ 函数返回自定义类型C++ 允许函数返回自定义类型,这意味着您可以让函数创建一个新对象并将其作为返回值。然而,对于返回自定义类型,
C++ 函数返回自定义类型时有什么要求?
2024-04-19

理解 C++ 函数返回值:深度解析类型和含义

c++++ 函数返回值类型定义了函数返回的数据类型及其行为:基本类型:返回原始数据,如整数、浮点数或布尔值。指针类型:返回内存地址的引用。引用类型:直接引用变量本身。void 类型:表示函数不返回任何值。理解 C++ 函数返回值:类型和含义
理解 C++ 函数返回值:深度解析类型和含义
2024-05-01

破解 C++ 函数返回值:类型、含义一网打尽

c++++ 函数返回值类型包括 void(无返回值)、基本类型(如 int)、类对象、指针和引用。常见含义有:错误代码(负值)、成功状态(正值)、信息(字符串等)、对象引用和指针(指向分配给函数的内存)。实战案例展示了如何使用不同类型和含义
破解 C++ 函数返回值:类型、含义一网打尽
2024-05-01

C++ 函数返回值的奥秘:一文搞定类型和含义

c++++ 函数返回值类型可分为 void、基础类型、复合类型和指针类型,含义包括成功/失败标志、结果和对象引用。 实战案例展示了返回基础类型、复合类型和指针类型的函数如何工作。C++ 函数返回值的奥秘:一文搞定类型和含义引言在 C++
C++ 函数返回值的奥秘:一文搞定类型和含义
2024-05-03

Golang:将自定义类型(别名为字节)转换为字符串

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《Golang:将自定义类型(别名为字节)转换为字符串》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮
Golang:将自定义类型(别名为字节)转换为字符串
2024-04-04

PHP 中是否可以使用动态类型来定义函数返回值的类型?

尽管 php 是一种动态类型语言,但函数返回值的类型必须是静态的。php 不允许使用动态类型来定义返回值的类型,这有助于在编译时进行类型检查和类型推断,确保程序的健壮性和可靠性。PHP 中使用动态类型定义函数返回值的类型什么是动态类型?
PHP 中是否可以使用动态类型来定义函数返回值的类型?
2024-04-15

在 C++ 中使用函数返回值:详解类型和含义

函数返回值在 c++++ 中至关重要,它允许函数返回指定类型的数据:返回值类型定义函数返回数据的类型,包括基本类型(如 int、float)和自定义类型(如指针、引用)。返回值含义根据函数意图而异,例如返回结果、指示状态、提供引用或创建新对
在 C++ 中使用函数返回值:详解类型和含义
2024-05-01

Go语言返回值类型推断对自动化测试的意义

go 语言返回值类型推断简化了自动化测试:允许编译器根据函数实现推断返回值类型,消除显式声明的需要。提高测试函数的简洁性和可读性,简化函数输出验证。实战案例展示了如何使用类型推断编写自动化测试,验证函数输出符合预期。Go 语言返回值类型推断
Go语言返回值类型推断对自动化测试的意义
2024-04-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录