搜索

pdf文档 2.4 Go's Hidden Pragmas

605.64 KB 58 页 0 下载 4 浏览 0 评论 0 收藏
所属分类: 后端开发 / Go
语言 格式 评分
英语
.pdf
3
摘要
文档主要介绍了Go语言中的隐藏pragmas(编译指示)。首先通过历史回顾,提到了ALGOL 68和C语言中的pragma用法,并以C语言#pragma pack为例进行说明。然后明确指出Go语言确实存在pragmas,并在源代码中通过注释形式使用,例如//go:nointerface、//go:noescape、//go:norace、//go:nosplit、//go:noinline、//go:systemstack、//go:nowritebarrier、//go:nowritebarrierrec、//go:yeswritebarrierrec、//go:cgo_unsafe_args、//go:uintptrescapes等。文档还展示了这些pragmas在编译器源码中的实现,如pragmaValue函数根据不同的verb返回对应的Pragma常量。最后提及这些内容来自GopherChina 2017的演讲,演讲者为Dave Cheney。
AI总结
Go 语言中存在“隐藏的” pragma(编译指示),它们在源码中实际被称为 pragma,用于控制编译器行为。常见的 pragma 包括:`go:nointerface`、`go:noescape`、`go:norace`、`go:nosplit`、`go:noinline`、`go:systemstack`、`go:nowritebarrier`、`go:nowritebarrierrec`、`go:yeswritebarrierrec`、`go:cgo_unsafe_args` 和 `go:uintptrescapes`。这些 pragma 源自 ALGOL 68 和 C 语言的传统,例如 C 语言中的 `#pragma pack` 用于控制结构体内存对齐。Go 的 pragma 以注释形式出现(如 `//go:noinline`),用于优化、调试或与底层运行时交互。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 46 页请下载阅读 -
文档评分
请文明评论,理性发言.