我可以在Go的源代码中的哪里找到它们的实现make。
make
事实证明,“代码搜索”功能对于这种语言的主要功能几乎是无用的,而且我没有确定要搜索C函数,Go函数还是什么的好方法。
将来我又如何在不求助于此的情况下解决这类问题?(即:教我钓鱼)
编辑 PS我已经找到了http://golang.org/pkg/builtin/#make,但是,与其余的go包不同的是,它不包含指向源的链接,大概是因为它在编译器领域的深处。
没有make()这样的。简而言之,这正在发生:
make()
make(chan int)
OMAKE
OMAKECHAN
runtime·makechan
gc,这是一种Go语言风格的C解析器,可make根据上下文解析调用(以简化类型检查)。
gc
此转换在cmd / compile / internal / gc / typecheck.go中完成。
在此之后,这取决于符号有(例如,OMAKECHAN为make(chan ...)),相应的运行时呼叫是取代在CMD /编译/内部/ GC / walk.go。在OMAKECHAN这种情况下将是makechan64或makechan。
make(chan ...)
makechan64
makechan
最后,在运行代码时,将调用pkg / runtime中的所述替换函数。
我倾向于通过想象这个特殊的事情可能发生在过程的哪个阶段来找到这些事情。对于make,在知道makein 的定义pkg/runtime(最基本的软件包)的情况下,它必须处于编译器级别,并且有可能被其他东西所替代。
pkg/runtime
然后,您必须搜索各个编译器阶段(gc, g, l),然后及时找到定义。