golang 一些知识

抽象语法树(AST)

用树状的方式表示编程语言的语法结构。抽象语法树中的每一个节点都表示源代码中的一个元素,每一颗子树都表示一个语法元素。

静态单赋值(Static Single Assignment, SSA)

如果一个中间代码具有静态单赋值的特性,那么每个变量就只会被赋值一次。

指令集

不同的处理器使用了不同的架构和机器语言,所以很多编程语言为了在不同的机器上运行需要将源代码根据架构翻译成不同的机器代码。

复杂指令集计算机(CISC)和精简指令集计算机(RISC)是目前的两种 CPU 区别

· 复杂指令集通过增加指令的数量减少需要执行的指令数;
· 精简指令集能使用更少的指令完成目标的计算任务;
编译原理
Go 的编译器在逻辑上可以被分成四个阶段:
词法与语法分析、类型检查和 AST 转换、通用 SSA 生成和最后的机器代码生成
调用惯例
Go 语言使用栈传递参数和接收返回值,所以它只需要在栈上多分配一些内存就可以返回多个值。
参数传递
传值:函数调用时会对参数进行拷贝,被调用方和调用方两者持有不相关的两份数据;
传引用:函数调用时会传递参数的指针,被调用方和调用方两者持有相同的数据,任意一方做出的修改都会影响另一方。
Go 语言中对于整型和数组类型的参数都是值传递的。
传递结构体时:会对结构体中的全部内容进行拷贝。
传递结构体指针时:会对结构体指针进行拷贝。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值