Go的type switch用來判斷值屬於哪種type。
Type switch類似一般的switch(又稱Expression switch),差別在判斷值的型態。
Type switch的switch
後要判斷型態的值使用.(type)
取得型態;case
後則為判斷的型態名稱。
下面使用type switchq判斷interface{}
slice is
中不同型態的值並分派到所屬型態的slice。
main.go
package main
import (
"fmt"
)
func main() {
is := [5]interface{}{1, 2, "3", "4", 5.0} // interface{} slice
var ints []int
var strs []string
var unknowns []interface{}
for _, i := range is {
switch v := i.(type) {
case int:
ints = append(ints, v)
case string:
strs = append(strs, v)
default:
unknowns = append(unknowns, v)
}
}
fmt.Printf("ints: %#v\n", ints) // ints: []int{1, 2}
fmt.Printf("strs: %#v\n", strs) // strs: []string{"3", "4"}
fmt.Printf("unknowns: %#v\n", unknowns) // unknowns: []interface {}{5}
}
沒有留言:
張貼留言