以下代码打印出来什么内容,说出为什么。

package main

import (
    "fmt"
)

type People interface {
    Show()
}

type Student struct{}

func (stu *Student) Show() {

}

func live() People {
    var stu *Student
    return stu
}

func main() {
    if live() == nil {
        fmt.Println("AAAAAAA")
    } else {
        fmt.Println("BBBBBBB")
    }
}

输出的是BBBBBBB 简单解释一下,就是接口的底层其实是有2个指针 一个指向类型,一个指向值。

//伪代码
指针{
    类型指针
    值指针
}

live()函数中 var stu *Student 类型 返回是 Prople指针 返回的内容 接口{ 类型指针 ->*Student 值指针 -> nil } if 接口类型 == nil 会判断类型指针 和 值指针 2个都为nil 结果才为T