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 使用的主要内容,如果未能解决你的问题,请参考以下文章

golang代码片段(摘抄)

golang interface 使用

golang中interface接口的深度解析

Golang Interface 解析

golang 关于 interface 的学习整理

golang interface 使用