Go에서 필드 태그는 JSON 마샬링에 사용되어 구조체 필드가 JSON 키에 매핑되는 방식을 지정합니다. 그러나 Terraform JSON을 처리할 때 필드 이름이 컴파일 타임에 동적이거나 알 수 없는 경우가 있습니다. 이는 필드 태그를 사용하여 JSON을 생성할 때 문제가 될 수 있습니다.
제공된 코드는 필드 태그를 사용하여 Terraform 파일에 대한 JSON을 생성하려는 시도를 보여줍니다. 그러나 web1과 같은 동적 식별자에서는 문제가 발생하므로 이러한 이름에 대해 정적 필드 태그를 정의하는 것이 불가능합니다.
type Resource struct { AwsResource AwsResource `json:"aws_instance,omitempty"` // Static } type AwsResource struct { AwsWebInstance AwsWebInstance `json:"web1,omitempty"` // Dynamic }
동적 필드 이름을 처리하려면 대체 전략 고용되어야 합니다. 한 가지 실행 가능한 옵션은 맵을 활용하는 것입니다.
type Resource struct { AWSInstance map[string]AWSInstance `json:"aws_instance"` // Map of dynamic instance names and their configuration } type AWSInstance struct { AMI string `json:"ami"` Count int `json:"count"` SourceDestCheck bool `json:"source_dest_check"` }
이 접근 방식에서 Resource 구조체의 AWSInstance 필드는 동적 인스턴스 이름(예: "web1", "web2" 등)을 매핑하는 맵입니다.
원하는 JSON을 생성하려면 지도를 채울 수 있습니다. 동적으로:
r := Resource{ AWSInstance: map[string]AWSInstance{ "web1": AWSInstance{ AMI: "qdx", Count: 2, }, }, }
그런 다음 이 맵을 마샬링하여 원하는 JSON 출력을 생성할 수 있습니다. 추가 설명을 위해 플레이그라운드 예제가 제공됩니다.
이 접근 방식은 맵을 활용하여 동적 키를 사용하여 JSON을 유연하게 마샬링할 수 있어 Go에서 변수 필드 태그 문제를 효과적으로 해결할 수 있습니다.
위 내용은 Go에서 Terraform용 동적 JSON 필드 태그를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!