Golang interface{}的用法

我们都知道,Go里面的interface{}是用于定义接口,但是它除了定义一组接口外,还可以作为一种类型使用,这类型可以是任意类型。

interface{}这种任意类型,在我们实际业务处理过程,相当有用,如:

1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func main() {
var name, age interface{}
name = "Bob"
age = 100
fmt.Println(name)
fmt.Println(age)
}

最后会打印出

1
2
Bob
100

这里仅是一个简单的示例,平时在开发过程中,经常会用到map类型,一般情况下,我们也会明确map键值的具体类型,如果map[string]string,但是有时候,我们又不太确定数据类型,则可以用到map[string]interface{}或者map[interface{}]interface{}等。来看个例子吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import (
"fmt"
"reflect"
)

func main() {
mapDynamic := make(map[interface{}]interface{})
mapDynamic["name"] = "Bob"
mapDynamic["age"] = 100
mapDynamic[100] = 100
for key, value := range mapDynamic {
fmt.Println("key type:", reflect.TypeOf(key))
fmt.Println("value type:", reflect.TypeOf(value))
}
}

运行后,我们可以看到打印结果如下:

1
2
3
4
5
6
key type: string
value type: string
key type: string
value type: int
key type: int
value type: int

可见interface{}能装入各种类型。但是,不同类型在类型转换过程的效率会有高有低,我们要适当使用interface{}

作者

eyiadmin

发布于

2022-08-23

更新于

2024-05-31

许可协议

评论