在 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中文网其他相关文章!