go中interface作為參數和switch里的type


package main

import (
	"fmt"
	"time"
)


func main()  {
	i :=2
	fmt.Println("Write", i ,"as")
	switch i {
	case 1:
		fmt.Println("one")
	case 2:
		fmt.Println("two")
	case 3:
		fmt.Println("three")
	}
	switch time.Now().Weekday() {
	case time.Saturday,time.Sunday:
		fmt.Println("It's the weekend")
	default:
		fmt.Println("Its a weekday")

	}
	//理解是獲取接口實例實際的類型指針,以此調用實例所有可調用的方法,包括接口方法及自有方法。
	//需要注意的是該寫法必須與switch case聯合使用,case中列出實現該接口的類型。
    //interface{}是可以傳任意參數的,i.(type)必須在switch語句里使用,如果需要在其他位置就要使用reflect.Typeof
	whatAmI := func(i interface{}) {
		switch t:=i.(type) {
		case bool:
			fmt.Println("bool")
		case int:
			fmt.Println("int")
		default:
			fmt.Printf("dont know type %T",t)
		}
	}
	whatAmI((true))
	whatAmI((1))
	whatAmI("hey")
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM