gpt4 book ai didi

go - 为什么 go package unsafe 源代码只有六行?

转载 作者:数据小太阳 更新时间:2023-10-29 03:47:07 24 4
gpt4 key购买 nike

package unsafe
type ArbitraryType int
type Pointer *ArbitraryType
func Sizeof(x ArbitraryType) uintptr
func Offsetof(x ArbitraryType) uintptr
func Alignof(x ArbitraryType) uintptr

Sizeof、Offsetof、Alignof的原理是什么?

最佳答案

通常只有函数签名而没有实现意味着实现在别处。通常在单独的程序集文件中。

在这种情况下,您偶然发现了标准库中未在汇编中实现的两种情况之一:unsafebuiltin .

这些包的 Go 实现仅用于在 godoc 中提供文档。它们的使用在 Go language specification 中定义。正因为如此,它的实现方式在 Go 中是不可能实现的。在不安全的情况下,“ArbitraryType”实际上意味着它接受所有可能的类型。如果没有隐式接口(interface)转换,这通常是不可能做到的。但是这些函数是在需要时由编译器实现的,并且可以忽略对 Go 代码的正常限制。


但是unsafe包是什么?它是一个提供各种工具来进行低级工作的包。它的主要用途是进行直接系统调用或 cgo。使用 unsafe 会给你很大的力量,但也不会阻止你用这种力量搬起石头砸自己的脚。如果可能的话,我建议避免使用它。


进一步阅读:

关于go - 为什么 go package unsafe 源代码只有六行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com