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")
}
}