Golang 임베디드 구조체 유형: 구문 및 사용법 이해
Go에서 임베디드 구조체 유형으로 작업할 때 해당 구문과 사용법을 이해하는 것이 중요합니다. 올바른 사용법. 이 문서에서는 포함된 구조체를 초기화할 수 없는 문제를 다룹니다.
문제:
다음 유형을 고려하세요.
type Value interface{} type NamedValue struct { Name string Value Value } type ErrorValue struct { NamedValue Error error }
다음 구문을 사용하여 ErrorValue를 초기화합니다.
e := ErrorValue{Name: "alpha", Value: 123, Error: err}
결과는 오류.
해결책:
이름 없는 필드라고도 하는 포함 유형은 정규화되지 않은 유형 이름으로 참조됩니다. 제공된 코드에서 ErrorValue를 초기화하는 구문이 올바르지 않습니다.
Go 언어 사양에 따라 포함된 필드는 필드 이름 없이 유형 이름을 사용하여 초기화되어야 합니다. 올바른 구문은 다음과 같습니다.
e := ErrorValue{NamedValue: NamedValue{Name: "fine", Value: 33}, Error: err}
또는 복합에서 필드 이름을 생략할 수도 있습니다. 리터럴:
e := ErrorValue{NamedValue{"fine", 33}, err}
예:
package main import "fmt" type Value interface{} type NamedValue struct { Name string Value Value } type ErrorValue struct { NamedValue Error error } func main() { e := ErrorValue{NamedValue{Name: "alpha", Value: 123}, fmt.Errorf("some error")} fmt.Println(e) }
출력:
{NamedValue:{Name:alpha Value:123} Error:some error}
임베디드 구조체 유형의 구문과 사용법을 이해함으로써, Go 프로그램에서 효과적으로 활용할 수 있습니다.
위 내용은 Go에서 임베디드 구조체를 올바르게 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!