golang interface 轉 string、int、float64


interface{}

interface{} 接口、interface{} 類型很多人都會混淆。interface{} 類型是沒有方法的接口。由於沒有 implements 關鍵字,所以說所有的類型都至少實現了 0 個方法,所有類型都實現了空接口。這意味着,如果編寫一個函數以 interface{} 值作為參數,那么你可以為該函數提供任何值。例如:

func DoSomething(v interface{}) {
   // ...
}

第一種知道是什么類型

如果知道是什么類型的話,就可以直接轉

// 假設 v 為 string或int64或float64
func DoSomething(v interface{}) {
	string1 := v.(string)
	int1 := v.(int64)
	float1 := v.(float64)
}

第二種不知道是什么類型

這時候就可以使用類型斷言,然后再轉為具體類型

func interface2Type(i interface{}) {
	switch i.(type) {
	case string:
		fmt.Println("string", i.(string))
		break
	case int:
		fmt.Println("int", i.(int))
		break
	case float64:
		fmt.Println("float64", i.(float64))
		break
	}
}
 
func main() {
	interface2Type("niuben")
	interface2Type(1122)
	interface2Type(11.22)
}

輸出

string niuben
int 1122
float64 11.22


免責聲明!

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



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