유형 어설션은 다음 단계를 통해 구현됩니다. 컴파일러는 유형 정보와 메서드 테이블이 포함된 런타임.유형 구조를 생성합니다. 값을 유형 어설션할 때 컴파일러는 해당 Runtime.type 구조가 대상 유형과 일치하는지 확인합니다. 일치가 성공하면 유형 어설션이 성공하고 ok가 true가 되며 값이 추출됩니다. 일치가 실패하면 유형 어설션이 실패하고 ok는 false이며 값은 nil로 설정됩니다.
Go 함수에서 유형 어설션은 어떻게 구현되나요?
유형 어설션을 사용하면 값이 특정 유형에 속하는지 확인하고 해당 값을 추출할 수 있습니다. 이는interface{}
및type
키워드를 사용하여 구현됩니다.interface{}
和type
关键字来实现。
语法
类型断言的语法如下:
value, ok := value.(type)
其中:
value
是要进行类型断言的值。type
是要检查的类型。ok
为布尔值,告诉我们类型断言是否成功。当ok
为true
时,value
属于指定类型,我们可以在value
中访问它的实际值。当ok
为false
时,类型断言失败,value
为nil
。实现
在底层,类型断言通过以下步骤实现:
runtime.type
结构体,它包含类型的信息和方法表。runtime.type
结构体是否与目标类型的runtime.type
结构体匹配。ok
为true
,并将值的实际值存储到value
中。ok
为false
,并将value
设置为nil
。实战案例
以下是使用类型断言的实际示例:
package main import "fmt" func main() { var value interface{} = 42 if i, ok := value.(int); ok { fmt.Println("Value is of type int and its value is:", i) } else { fmt.Println("Value is not of type int") } }
结果:
Value is of type int and its value is: 42
注意:
value
将被设置为nil
,即使原始值不是nil
value
는 유형 어설션할 값입니다.type
은 확인할 유형입니다.ok
는 유형 어설션이 성공했는지 여부를 알려주는 부울 값입니다.ok
가true
이면value
는 지정된 유형에 속하며value
에서 실제 값에 액세스할 수 있습니다.ok
가false
이면 유형 어설션이 실패하고value
는nil
입니다. 구현내부적으로 유형 어설션은 다음 단계를 통해 구현됩니다.
runtime.type
구조가 대상 유형의runtime.type
구조와 일치하는지 확인합니다.ok
는true
이며 값의 실제 값이value
에 저장됩니다.ok
는false
이고value
는nil >.
nil
이 아니더라도value
는nil
로 설정됩니다.위 내용은 golang 함수에서 유형 주장은 어떻게 구현됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!