没有
make()这样的。简而言之,这正在发生:
- 输入代码:
make(chan int)
- 符号替换:
OMAKE
- 符号类型检查:
OMAKECHAN
- 代码生成:
runtime·makechan
gc,这是一种Go语言风格的C解析器,可
make根据上下文解析调用(以简化类型检查)。
此转换在cmd / compile / internal / gc /
typecheck.go中完成。
在此之后,这取决于符号有(例如,
OMAKECHAN为
make(chan ...)),相应的运行时呼叫是取代在CMD /编译/内部/ GC /
walk.go。在
OMAKECHAN这种情况下将是
makechan64或
makechan。
最后,在运行代码时,将调用pkg /
runtime中的所述替换函数。
我倾向于通过想象这个特殊的事情可能发生在过程的哪个阶段来找到这些事情。对于
make,在知道
makein
的定义
pkg/runtime(最基本的软件包)的情况下,它必须处于编译器级别,并且有可能被其他东西所替代。
然后,您必须搜索各个编译器阶段(gc, g, l),然后及时找到定义。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)