網頁

2022/3/6

Golang type swtich

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}

}


沒有留言:

張貼留言