golang中x.(type)只能在switch中使用

例如:

 

[plain]  view plain  copy
 
  1. func MyPrintf(args ...interface{}) {  
  2. for _, arg := range args {  
  3. switch arg.(type) {  
  4. case int:  
  5. fmt.Println(arg, "is an int value.")  
  6. case string:  
  7. fmt.Println(arg, "is a string value.")  
  8. case int64:  
  9. fmt.Println(arg, "is an int64 value.")  
  10. default:  
  11. fmt.Println(arg, "is an unknown type.")  
  12. }  
  13. }  
  14. }  
packagemain
 
 
import(
    ."fmt"
    "strconv"
)
 
 
typeElementinterface{}
 
 
typeList[]Element
 
 
typepersonstruct{
    namestring
    ageint
}
 
 
func(pperson)String()string{
    return"(name:"+p.name+"-age:"+strconv.Itoa(p.age)+"years"
}
 
 
funcmain(){
 
 
    list:=make(List,3)
    list[0]=1
    list[1]="hello"
    list[2]=person{"TimLu",29}
    forindex,element:=rangelist{
        //        Println(element.(type))
        switchvalue:=element.(type){
        caseint:
            Printf("list[%d]isanintanditsvalueis%d\n",index,value)
        casestring:
            Printf("list[%d]isastringanditsvalueis%s\n",index,value)
        caseperson:
            Printf("list[%d]isaPersonanditsvalueis%s\n",index,value)
        default:
            Println("list[%d]isofadifferenttype",index)
        }
 
 
    }
    //    forindex,element:rangelist{
    ////        switchvalue:=element.(type){
 
 
    ////        }
    //Println(element.(type))
 
 
    //    }
}
 
  
  

猜你喜欢

转载自xialluyouyue.iteye.com/blog/2360927