>  기사  >  백엔드 개발  >  인터페이스를 사용하여 Go 구조체에 문자열과 정수를 모두 저장하려면 어떻게 해야 합니까?

인터페이스를 사용하여 Go 구조체에 문자열과 정수를 모두 저장하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-17 07:54:03281검색

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)) }

구조체에서 입력 인터페이스 사용

이제 입력 인터페이스를 사용하도록 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으로 문의하세요.