구조체 포인터를 인터페이스로 변환
다음 시나리오를 고려하세요.
type foo struct{} func bar(baz interface{}) {}
foo와 bar가 불변인 경우 baz는 bar의 foo 구조체 포인터로 복원되어야 하며 문제가 발생합니다. bar에서 매개변수로 사용하기 위해 &foo{}를 인터페이스{}로 캐스팅할 수 있나요?
솔루션
&foo{}를 인터페이스{}로 캐스팅하는 것은 간단합니다.
f := &foo{} bar(f) // Every type implements interface{}. No special action is needed.
*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 중국어 웹사이트의 기타 관련 기사를 참조하세요!