GoLang 类型转换和类型断言

xiaoxiao2021-02-28  98

Go语言中的强制类型转换 与 C语言的区别是: char b = 9; int a = (int)b; _注意:此处括号中为将强制转换的类型_ ; var Byte b = 9 var uint a = int(b) _注意:此处括号中为 将要转换的值_ Go 的类型断言和switch判断, 两种方式: Comma-ok断言的语法是:value, ok := element.(T)。element必须是接口类型的变量,T是普通类型。如果断言失败,ok为false,否则ok为true并且value为变量的值。来看个例子:_例: var In interface{} var age int = 9 In = age if value, ok := In.(int); ok{ fmt.Println("The In Type is int, value : ", value) }switch 进行类型判断: package main import "fmt" type Speaker interface{ Say(msg string) Listen(msg string) string Interrupt(msg string) } type Wanglan struct{ msg string } type Jianglou struct{ msg string } func (this *Wanglan)Say(msg string){ fmt.Println("Wanglan Say : ", msg) } func (this *Wanglan)Listen(msg string) string{ this.msg = msg return this.msg } func (this *Wanglan)Interrupt(msg string){ this.Say(msg) } func (this *Jianglou)Say(msg string){ fmt.Println("Wanglan Say : ", msg) } func (this *Jianglou)Listen(msg string)string{ this.msg = msg return this.msg } func (this *Jianglou)Interrupt(msg string){ this.Say(msg) } func main(){ var W1 *Wanglan var J1 *Jianglou var S1 Speaker S1 = W1 S1.Say("hello...") S1 = J1 S1.Say("Good Luck...") if value, OK := S1.(*Wanglan); OK{ fmt.Println("Wanglan Say : ", value) } if value, OK := S1.(*Jianglou); OK{ fmt.Println("Jianglou Say : ", value) } switch v := S1.(type){ case *Wanglan: fmt.Println("Wanglan Say : ", v) case *Jianglou: fmt.Println("Jianglou Say : ", v) default: fmt.Println("No define type") } }
转载请注明原文地址: https://www.6miu.com/read-71701.html

最新回复(0)