>백엔드 개발 >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 구조체에 문자열과 정수 값 모두 저장

Go에서는 문자열과 정수 값을 모두 Go 구조체에 직접 저장할 수 없습니다. 단일 구조체 필드. 이는 변수가 구체적이고 잘 정의된 유형을 가져야 하는 언어의 강력한 유형 시스템 때문입니다.

가능한 솔루션

이 제한 사항을 해결하려면 다음을 수행해야 합니다. 몇 가지 옵션:

  1. 입력을 동적으로 변환: 필요할 때 int 입력을 문자열로 변환하고 처리 시 이를 다시 int로 변환합니다.
  2. 여러 구조체 정의: testCaseString 및 testCaseInt와 같은 다양한 입력 유형에 대해 별도의 구조체를 정의할 수 있습니다.
  3. 인터페이스 구현: Go 1.18부터 인터페이스를 다음과 같이 사용할 수 있습니다. 해결 방법. Go에는 기본 합계 유형이 없지만 여러 유형을 구현할 수 있는 인터페이스를 정의할 수 있습니다.

Go 1.18 이상에서 인터페이스 구현

인터페이스를 사용하면 문자열 값과 int 값을 모두 보유할 수 있는 유형을 만들 수 있습니다. 예는 다음과 같습니다.

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으로 문의하세요.