go中的any

222 阅读1分钟

前言

在没有any类型之前,go语言中,我们经常使用interface{},来表示一个类型是未知的,或者有好几种其他基础类型的情况,但在go1.18版本之后,新增了any类型,用来代替interface{}

any使用

go使用any使用

package main

import "fmt"

func say(data any) {
    switch data.(type) {
    case int:
       fmt.Println("int")
    case string:
       fmt.Println("string")

    }
}

func main() {
    say(123)

}

输出结果为

image.png

any转换为类型

package main

import "fmt"

func say(data any) {
    switch data.(type) {
    case int:
       b := data.(int) + 1
       fmt.Println(b)
    case string:
       fmt.Println("string")

    }
}

func main() {
    say(123)

}

输出结果为

image.png

any用在map

package main

import "fmt"

func main() {
    m := make(map[string]any)
    m["a"] = 1
    m["b"] = "aaa"
    for k, v := range m {
       fmt.Println(k, v)
       a, b := v.(int)
       fmt.Println(a, b)
    }

}

输出结果为 image.png

总结

在go1.18之后,any关键字可以作为开发使用,不过看个人