>  기사  >  백엔드 개발  >  Go의 단일 구조체 필드에 다양한 데이터 유형을 저장할 수 있나요?

Go의 단일 구조체 필드에 다양한 데이터 유형을 저장할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-15 16:27:03767검색

Can You Store Different Data Types in a Single Struct Field in Go?

Go에서 여러 데이터 유형에 대한 구조체 필드 선언 및 사용

Go에서는 관련 데이터를 나타내는 구조체를 정의할 수 있습니다. 그러나 구조체 필드가 ​​문자열과 int 값을 모두 저장할 수 있도록 하려면 어떻게 해야 할까요?

이 문제를 더 잘 이해하려면 다음 구조체를 고려하세요.

type testCase struct {
   input   string
   isValid bool
}

이 구조체는 설계되었습니다. 입력이 문자열이고 isValid가 부울인 테스트 사례를 저장합니다. 일부 시나리오에서는 입력이 문자열 또는 int가 되도록 허용할 수 있습니다.

처음에는 처리 중에 int 입력을 문자열로 변환했다가 다시 int로 변환하는 것을 고려할 수 있습니다. 그러나 이 접근 방식은 비효율적이고 오류가 발생하기 쉽습니다.

또 다른 옵션은 testCaseInt 및 testCaseStruct와 같은 두 개의 별도 구조체를 정의하는 것입니다. 이렇게 하면 문제는 해결되지만 불필요한 코드 중복이 발생합니다.

인터페이스를 사용하여 단일 구조체 필드에 다양한 데이터 유형을 저장할 수 있습니까?

아니요 , 1.18 이전 Go 버전에서는 불가능합니다. Go의 유형 시스템은 데이터의 여러 변형을 나타낼 수 있는 유형인 합계 유형을 지원하지 않습니다.

Go 1.18에서는 제네릭 도입을 통해 합계 유형이 지원됩니다. 그러나 그때까지는 이 기능을 구현하는 기본 제공 방법이 없습니다.

위 내용은 Go의 단일 구조체 필드에 다양한 데이터 유형을 저장할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.