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 interface 使用

golang interface 使用

golang interface 使用

Golang interface 接口详解

Golang interface 接口详解

Golang | 既是接口又是类型,interface是什么神仙用法?