go 和walk 可以通用吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 和walk 可以通用吗?相关的知识,希望对你有一定的参考价值。

这个要分情况讨论的,一般,1.如果表示去哪里的话,不强调方式,只强调去,则可以通用,不过一般walk比较强调步行,而go则比较随意. 2.walk有名词词性,go for a walk,去散步 3.walk还可以是及物动词,walk the dog 溜狗 . 希望对你有用啦~ 参考技术A 如果讲话者和听话者都熟知是走路到的,可以通用,如walk home, go home.
出行讲,walk是走路,(比较狭窄)。go 是去,可以是走路,也可以使用任何交通方式。
参考技术B 一般不能,go就表示走,不一定用什么方式 ,而walk是步行的意思
例如:walk to school是走着步行去学校
go to school 是去学校,一定是走,可以坐车或骑车等等

Go 的 interface 和 C 中的 void* 一样吗?

【中文标题】Go 的 interface 和 C 中的 void* 一样吗?【英文标题】:Is Go's interface the same as void* in C?Go 的 interface 和 C 中的 void* 一样吗? 【发布时间】:2013-12-02 17:10:57 【问题描述】:

既然interface 类型的变量可以有任何值,这是否意味着它本质上是一个像C 中的void* 一样的通用指针?

【问题讨论】:

请阅读"Go data structures: interfaces"。 @kostix 感谢您的链接,但这说明 golang 规范没有? 它解释了实现,它清楚地遵循 interface 不是“像 C 中的 void * 这样的通用指针”。 @kostix 我对底层功能以及 Go 如何使 interface 成为其他类型的通用容器更加好奇。 也许已经很晚了,但我真的很喜欢你的问题。 :) 【参考方案1】:

虽然 C 的 void * 指针和 Go 的 interface 变量共享可以存储任意类型的属性,但有一个很大的区别:Go 接口变量也存储它们所持有的值的类型。

因此,尽管 C 程序员应确保从 void * 指针到特定类型的任何强制转换都是安全的,但 Go 运行时可以检查任何类型断言是否正确。

在接口变量中找到的类型信息还允许通过 reflect 包进行复杂的运行时自省,这对于普通的 void * 指针是不可能的。

【讨论】:

所以interface 就像struct 带有void* 和其他类型数据 是的。类型信息还用于决定如何在非空接口类型上调度方法调用。【参考方案2】:

我倾向于说“一点也不!”。但我承认,它可能服务于“抓住任何发生的一切”的相同目的。

    interface 不是指针,因此您不能取消引用它。 您可以将 void* 强制转换为任何内容,但类型断言 interface 可能会导致运行时恐慌。 确定void* 指向的实际类型很复杂(或不可能),但包反射允许您为interface 执行此操作。

所以不! interface 是空接口,与 C 语言中的 void* 无关,只是两者都可能用于处理您不关心其真实性质的任何事情。

【讨论】:

你可能想说interface 也可以保存原始类型,而void * 指向一些东西(除非你真的很不整洁,但不能保证全部C 的原始类型可以无损地转换为 void *) 我认为它是那些方形/矩形的东西之一。 interfacevoid*,但 void* 不是 interface(因为接口不仅仅是一个指针。这样说公平吗? @Brenden:不,我看不出有什么理由解释这样的空界面。所有这些“用语言 Y 构造 X 就像 Z 和语言 U 一样”并不总是有帮助。 @Volker 将未知概念与熟悉的概念联系起来很有帮助。

以上是关于go 和walk 可以通用吗?的主要内容,如果未能解决你的问题,请参考以下文章

go pass ,walk into ,walk through ,go by 的区别

Go Walk教程 - 流程控制(for)

斯凯奇go walk 2 和 3 的区别

妈妈宝宝学英语第⑦天—《Go for a Walk》

Go Walk教程 - 流程控制( switch)

array_map、array_walk 和 array_filter 的区别