go语言空interface什么意思?

天外怪魔 2019-05-30 11:05:50
比如有下面这个定义:

typedef struct computeraction
{
corenumber int
_intput interface{}
_output interface{}
}

同时,有下面这个函数:

genAction(writer io.Writer)
{
// balabala
}

然后,调用的时候可以这样:

var act1 computeraction
genAction(act1._intput.(io.Writer)

不明白的地方有2个,
一是为什么可以这个一个方法都没有的interface?
二是genAction(act1._intput.(io.Writer),是特么几个意思?这里的_input后面()是表示调用吗?
...全文
161 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ying1234 2019-05-31
  • 打赏
  • 举报
回复
go 语言里的空接口interface{}相当于其它语言里的基类型object

go 语言中规定,一个类型要给接口类型赋值,必须先实现接口里所有的方法,而空接口没有定义任何方法,那么就认为任何类型都实现了空接口,所以任何类型都可以给空接口interface{}赋值。
天外怪魔 2019-05-31
  • 打赏
  • 举报
回复
自己顶一下,请大家指点。
qybao 2019-05-31
  • 打赏
  • 举报
回复
go的 interface{}是个空接口(没有任何方法声明),它可以赋任意类型,所以 你可以把 interface{} 看成是任意类型

var a interface{}
var s string
var ok bool
a = "test" //string 类型
if s, ok = a.(string), ok { //强行转换为具体类型,转成功则ok为ture,否则false,也可以不check,转失败会抛出异常
fat.Printf("s=%s", s)
}

一是为什么可以这个一个方法都没有的interface?
这个是个空接口,没有任何方法,把它当作一种变量类型理解(任意类型)

二是genAction(act1._intput.(io.Writer),是特么几个意思?这里的_input后面()是表示调用吗?
这是类型强行转换,把interface{}类型的_intput转成io.Writer类型
内容概要:本文档是一份关于开发经典小游戏“贪吃蛇”的保姆级毕业设计指导文档,涵盖从游戏规则、功能设计、技术选型到核心代码实现的完整流程。文档以Python + Pygame为技术栈,详细讲解了游戏初始化、蛇的移动逻辑、食物生成、碰撞检测、计分与等级系统、键盘控制及主循环渲染等核心模块,并提供了完整的项目结构和源码示例。采用状态机管理游戏状态,使用列表模拟链表结构存储蛇身,结合方向缓冲机制优化操作体验,同时引入难度递增机制提升可玩性。文末还列举了飞机大战、扫雷、五子棋等同类课题作为拓展参考。; 适合人群:具备一定编程基础、正在进行毕业设计或课程设计的学生,尤其是对游戏开发感兴趣的初级开发者。; 使用场景及目标:①帮助学生独立完成一个功能完整、结构清晰的小游戏项目,用于毕业答辩或课程展示;②深入理解事件驱动编程、状态管理、碰撞检测、定时刷新等基础编程概念;③掌握Python + Pygame开发2D小游戏的核心技能,并具备二次开发与功能拓展能力。; 阅读建议:建议读者按照“规则→设计→代码→运行”的顺序逐步学习,动手实践每个模块并调试代码,重点关注方向缓冲、状态机、食物生成算法等设计细节,同时可尝试实现文末提出的拓展功能以增强项目亮点。

2,351

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • 俺叫西西弗斯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧