golang interface 使用
Posted huatian5
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang interface 使用相关的知识,希望对你有一定的参考价值。
interface 是方法签名的集合,interface 类型的值可以存储任何类型变量的值的类型。学到的一个问题,判断 interface 类型的变量不能只判断 value,需要判断 type 和 value
package main
import "fmt"
type sample interface
do()
type person struct
func (*person) do()
func getNil() *person
return nil
func checkNil(p sample)
if p == nil
fmt.Println("p is nil")
else
fmt.Println("p is not nil")
func main()
checkNil(getNil())
p is not nil
将 checkNil 里面的判断改为 if reflect.ValueOf(p).IsNil()
使用 IsNil 就可以正确判断
IsNil 函数会对非 struct 类型进行原始数据的 check
以上是关于golang interface 使用的主要内容,如果未能解决你的问题,请参考以下文章