登录
首页 >  Golang >  Go问答

接口是指针吗?

来源:stackoverflow

时间:2024-04-11 18:36:32 278浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《接口是指针吗?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

假设我有以下类型定义:

type icat interface {
  meow() string
} 

type cat struct {   
  name string
}

func (c cat) meow() string { 
  return "meow" 
}

当我执行此操作时:

var a cat
a.name = "tom"

在内存中分配 cat 类型的结构,并为其分配一个字段。

但是,如果执行以下操作:

var b ICat

内存中到底分配了什么? golang 接口只是一个包含指向另一个结构的指针的结构吗? “盒装指针”?。


正确答案


接口包含两件事:指向基础数据的指针和该数据的类型。所以,当你声明

var b icat

b 包含这两个元素。

当你这样做时:

b:=cat{}

b 现在包含指向 cat{} 副本的指针,并且数据是 struct cat

当你这样做时:

b:=&Cat{}

b 现在包含指向 cat{} 的指针的副本,并且它是 *cat

今天关于《接口是指针吗?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>