首页  >  文章  >  后端开发  >  如何使用接口在 Go 结构体中存储字符串和整数?

如何使用接口在 Go 结构体中存储字符串和整数?

Susan Sarandon
Susan Sarandon原创
2024-11-17 07:54:03279浏览

How Can I Store Both Strings and Integers in a Go Struct Using an Interface?

在 Go 结构体中组合字符串和整数值:使用接口

在 Go 中,你可能会遇到需要数据结构的场景存储字符串和整数值。考虑以下结构定义:

type testCase struct {
   input   string
   isValid bool
}

但是,您可能会发现根据用例将输入处理为字符串或整数会很方便。为此,您可以使用接口,如下所示:

type Input interface {
   String() string
}

字符串和整数类型的接口实现

您可以为两者实现输入接口字符串和整数:

type StringInput string
func (s StringInput) String() string { return string(s) }

type IntegerInput int
func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }

使用输入接口Struct

现在,您可以修改 testCase 结构以使用输入接口:

type testCase struct {
   input   Input
   isValid bool
}

示例代码

这里是一个示例说明如何使用此接口来存储和检索字符串和整数值:

package main

import (
    "fmt"
    "strconv"
)

type Input interface {
    String() string
}

type StringInput string
func (s StringInput) String() string { return string(s) }

type IntegerInput int
func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }

type testCase struct {
    input   Input
    isValid bool
}

func main() {
    // Create a test case with a string input
    testString := testCase{
        input:   StringInput("Hello, world!"),
        isValid: true,
    }

    // Print the input as a string
    fmt.Println(testString.input.String()) // Output: Hello, world!

    // Create a test case with an integer input
    testInt := testCase{
        input:   IntegerInput(123),
        isValid: true,
    }

    // Print the input as a string
    fmt.Println(testInt.input.String()) // Output: 123
}

通过利用输入接口,您可以无缝处理 Go 结构中的字符串和整数值,从而提供更大的灵活性和代码可重用性。

以上是如何使用接口在 Go 结构体中存储字符串和整数?的详细内容。更多信息请关注PHP中文网其他相关文章!

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