TOC

Go 几个特殊用法

点后直接括号

  1. type assertion 类型断言
  2. type switch 类型判断

Golang 是强类型的语言,这两种语法都是只对 interface{} 有效。

package main

import "fmt"

func test(value interface{}) {
    switch value.(type) {
    case string:
        fmt.Printf("%#v\n", value)
    }
}

func test2(value interface{}) {
    v1, ok := value.([]byte)
    fmt.Printf("%#v, %#v\n", v1, ok)

    v2, ok := value.(string)
    fmt.Printf("%#v, %#v\n", v2, ok)
}

func main() {
    a := "abc"
    test(a)
    test2(a)
}