다음 코드 조각이 주어진 경우:
type foo struct {} func bar(baz interface{}) {}
여기서 foo와 bar는 모두 설계상 불변입니다. , 어떻게 &foo{} 구조체 포인터를 인터페이스{} 값으로 변환하고 나중에 이를 bar 함수에 대한 매개 변수가 있습니까?
구조체 포인터를 인터페이스{} 값으로 캐스팅하는 것은 간단합니다.
f := &foo{} bar(f) // Every type implements interface{}, so no special action is required.
인터페이스에서 원래 *foo 포인터를 복구하는 방법 {} 값에는 유형 어설션이나 유형 스위치가 필요합니다.
유형 주장:
func bar(baz interface{}) { f, ok := baz.(*foo) if !ok { // The assertion failed because baz was not of type *foo. } // f is of type *foo. }
스위치 유형:
func bar(baz interface{}) { switch f := baz.(type) { case *foo: // f is of type *foo. default: // f is some other type. } }
위 내용은 Go에서 구조체 포인터를 인터페이스 값으로 어떻게 변환할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!