企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
### 类型断言,类型查询 ~~~ type Student struct { name string id int } func main() { var i = make([]interface{}, 3) i[0] = 1 //int i[1] = "hello go" //string i[2] = Student{"jack", 20} //类型断言 for key, value := range i { if data, ok := value.(int); ok == true { fmt.Printf("下标:%d,类型为int,内容为:%d\n", key, data) } else if data, ok := value.(string); ok == true { fmt.Printf("下标:%d,类型为string,内容为:%s\n", key, data) } else if data, ok := value.(Student); ok == true { fmt.Printf("下标:%d,类型为student,学生姓名:%s,学号:%d", key, data.name, data.id) } } } ~~~ ~~~ 下标:0,类型为int,内容为:1 下标:1,类型为string,内容为:hello go 下标:2,类型为student,学生姓名:jack,学号:20 ~~~ switch方法 ~~~ func main() { var i = make([]interface{}, 3) i[0] = 1 //int i[1] = "hello go" //string i[2] = Student{"jack", 20} //类型断言 for key, data := range i { switch value := data.(type) { // .(type) 只能在switch里面使用 case Student: fmt.Printf("下标:%d,类型为student,学生姓名:%s,学号:%d", key, value.name, value.id) case string: fmt.Printf("下标:%d,类型为string,内容为:%s\n", key, value) case int: fmt.Printf("下标:%d,类型为int,内容为:%d\n", key, value) } } } ~~~