当前位置: 首页 > 面试题库 >

内置源代码位置

呼延钱明
2023-03-14
问题内容

我可以在Go的源代码中的哪里找到它们的实现make

事实证明,“代码搜索”功能对于这种语言的主要功能几乎是无用的,而且我没有确定要搜索C函数,Go函数还是什么的好方法。

将来我又如何在不求助于此的情况下解决这类问题?(即:教我钓鱼)

编辑
PS我已经找到了http://golang.org/pkg/builtin/#make,但是,与其余的go包不同的是,它不包含指向源的链接,大概是因为它在编译器领域的深处。


问题答案:

没有make()这样的。简而言之,这正在发生:

  1. 输入代码: make(chan int)
  2. 符号替换: OMAKE
  3. 符号类型检查: OMAKECHAN
  4. 代码生成: runtime·makechan

gc,这是一种Go语言风格的C解析器,可make根据上下文解析调用(以简化类型检查)。

此转换在cmd / compile / internal / gc /
typecheck.go中完成

在此之后,这取决于符号有(例如,OMAKECHANmake(chan ...)),相应的运行时呼叫是取代在CMD /编译/内部/ GC /
walk.go
。在OMAKECHAN这种情况下将是makechan64makechan

最后,在运行代码时,将调用pkg /
runtime中的所述替换函数

你怎么找到这个

我倾向于通过想象这个特殊的事情可能发生在过程的哪个阶段来找到这些事情。对于make,在知道makein
的定义pkg/runtime(最基本的软件包)的情况下,它必须处于编译器级别,并且有可能被其他东西所替代。

然后,您必须搜索各个编译器阶段(gc, g, l),然后及时找到定义。



 类似资料:
  • 问题内容: 有没有办法查看内置函数如何在python中工作?我不仅意味着如何使用它们,而且还意味着它们是如何构建的,排序或枚举等背后的代码是什么? 问题答案: 由于Python是开源的,因此你可以阅读源代码。 要找出实现了特定模块或功能的文件,通常可以打印属性。或者,你可以使用该inspect模块,请参阅的文档中的“ 检索源代码 ”部分。 对于内置的类和方法,这是不是这样,因为直白,并会返回一个类

  • configure脚本配置Apache的源代码树并且将其安装到指定的平台上。丰富的选项允许你根据自己的特定状况和特定需求对Apache进行定制。 这个脚本位于源代码树的根目录下,并且只能用于类Unix操作系统。要了解其他平台的信息,参见:针对特定平台的说明文档。 语法 你必须在源代码树的根目录下调用configure脚本,语法如下: ./configure [OPTION]... [VAR=VAL

  • 问题内容: 我有3个要素。 第一个更大(包装)并具有 第2个相对于第1个相对位置绝对定位(并包含在第1个中) 第3个包含在第2个中,并且也具有绝对定位。 为什么第3个位置相对于第2个绝对位置(这也是第1个位置的绝对位置)而不是相对位置的第一个位置? 因为3rd 是绝对定位到2nd的绝对定位。 问题答案: 因为就像重置孩子的相对位置一样。 这是无法解决的-如果您希望第三个相对于第一个绝对定位,则必须

  • 似乎至少有三种方法可以做听起来相同的事情。 他们的区别是什么 注意:这看起来可能是这个的重复,但这些答案是不完整的,并且不能解释更改URL与“远程”的区别? 编辑: 做一些进一步的谷歌搜索:从这个SO答案中: git中的远程基本上是另一个存储库的书签,您可能希望从中提取或推送代码。带书签的存储库可能位于本地计算机上的另一个文件夹、远程服务器上,甚至可能是存储库本身。。。但最简单的类比是书签。存储库

  • 我尝试过使用“自定义资源选择”和“资源选择条件”,但没有奏效。

  • 基本上,我需要配置CI/CD与比特桶源代码到ECS容器。我想使用CodePipline部署新的ECR映像到ECS。 目前,AWS CodePipline中没有将bitbucket指定为源的选项。然而,我已经设法用webhooks配置了CodeBuild,这样它就可以构建docker文件,并在每次推送发布分支时将其推送到ECR。 我想将ECR配置为CodePipline中的“源”阶段,并将其部署到现