【笔记】Go语言的断言

前言

Go语言的断言

将接口类型断言为其他类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type User struct {
Value string
}

func (User) Method(value string) {}

type Person struct {
Value string
}

func check(arg interface{}) {
arg.(User).Method(arg.(User).Value)
}

func main() {
var value = User{Value: "value"}
check(value)
}

断言时防止出错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
type User struct {
Value string
}

func (User) Method(value string) {}

type Person struct {
Value string
}

func check(arg interface{}) {
switch arg.(type) {
case User:
var user User = arg.(User)
case Person:
var person Person = arg.(Person)
}
}

func main() {
var value = User{Value: "value"}
check(value)
}

完成

参考文献

哔哩哔哩——go圈里最会写js的奇淼