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 *
)
我认为它是那些方形/矩形的东西之一。 interface
是 void*
,但 void*
不是 interface
(因为接口不仅仅是一个指针。这样说公平吗?
@Brenden:不,我看不出有什么理由解释这样的空界面。所有这些“用语言 Y 构造 X 就像 Z 和语言 U 一样”并不总是有帮助。
@Volker 将未知概念与熟悉的概念联系起来很有帮助。以上是关于go 和walk 可以通用吗?的主要内容,如果未能解决你的问题,请参考以下文章