首页 >后端开发 >Golang >如何在 Go 结构中同时存储 String 和 Int 值?

如何在 Go 结构中同时存储 String 和 Int 值?

Patricia Arquette
Patricia Arquette原创
2024-12-03 10:58:09939浏览

How Can You Store Both String and Int Values in a Go Struct?

在 Go 结构体中存储 String 和 Int 值

在 Go 中,不可能将 string 和 int 值直接存储在结构体中单个结构体字段。这是由于该语言的强类型系统,它要求变量具有特定的、定义良好的类型。

可能的解决方案

要解决此限制,您可以几个选项:

  1. 动态转换输入:您可以转换在需要时将 int 输入转换为字符串,并在处理时将其转换回 int。
  2. 定义多个结构体:您可以为不同的输入类型定义单独的结构体,例如 testCaseString 和 testCaseInt。
  3. 接口实现:从 Go 1.18 开始,你可以将接口用作一个解决方法。虽然 Go 没有原生的 sum 类型,但它允许您定义多种类型可以实现的接口。

Go 1.18 及更高版本中的接口实现

使用接口,您可以创建可以同时保存字符串和整数值的类型。这是一个示例:

type Input interface {
    IsValid() bool
    Value() interface{}
}

type TestCaseBool struct {
    input   bool
    isValid bool
}

func (tc TestCaseBool) IsValid() bool {
    return tc.isValid
}

func (tc TestCaseBool) Value() interface{} {
    return tc.input
}

您现在可以使用 TestCaseBool 结构来保存布尔值或空接口。

注意:此解决方案需要 Go 1.18或更高级别的工作。

以上是如何在 Go 结构中同时存储 String 和 Int 值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn