golang 인터페이스interface {}, 단언, switch type
// Assertion project main.go
package main
import (
"fmt"
)
type Bag struct {
Key string
}
type Bag2 struct {
Key int
}
func main() {
var b1 interface{}
var b2 interface{}
b1 = Bag{Key: "1"}
b2 = Bag2{Key: 0}
// interface{}
// :
{ // Bag 0
b, ok := b1.(Bag)
fmt.Println("Bag :", ok, " ", b)
}
{ // Bag2 0
b, ok := b2.(Bag2)
fmt.Println("Bag2 :", ok, " ", b)
}
// :
switch v := b1.(type) { //v b1 Bag
case Bag:
fmt.Println("b1.(type):", "Bag", v)
case Bag2:
fmt.Println("b1.(type):", "Bag2", v)
default:
fmt.Println("b1.(type):", "other", v)
}
}
단언: 일반적으로interface에 사용된 대상의 데이터 형식으로 호출된 후 자동으로 인터페이스를 상응하는 대상으로 변환하고 문법구조 인터페이스 대상(obj), 저장된 데이터 형식(string), v,ok:=obj.(string), 상응하는 대상 ok는 진실이고 v는 상응하는 대상 및 데이터입니다.
switch type: 알고 있거나 알 수 없는 대상 데이터 형식은 모두 가능합니다. b1.(type)는 switch와 함께 사용해야 하며 이 문장을 단독으로 실행할 수 없습니다.switch v:= b1.(type) {//b1은interface 대상, v는 해당 대상 및 데이터case Bag://유형이 Bag일 때 fmt.Println("b1.(type):", "Bag", "Bag", v)case Bag2://유형이 Bag2일 때 fmt.Println("b1.(type):", "Bag2", v)default://유형이 다른 유형일 때 fmt.Println("b1.(type):", "otv):
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
set containerThere is no built-in set container in Go How to implement Set struct{} => type struct{}{} => 0bytes How to create set :=...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.