golang基础(unsafe包使用)

本文介绍了Golang的unsafe包,用于在特定场景下进行指针操作。通过讲解unsafe.Pointer和uintptr的转换规则,以及offsetof和sizeof等函数的使用,阐述了如何安全地使用unsafe包来增强代码的功能。同时强调,虽然unsafe包提供了指针运算,但应谨慎使用,避免引发错误。
摘要由CSDN通过智能技术生成

前言

在使用C/C++过程中,很多时候出现的错误都是由于指针操作不合理,导致各种奇奇怪怪的问题。但是,也是由于指针的存在才让C/C++代码的运行效率比其他语言的略高。golang也有指针类型,但是不允许直接对指针类型进行运算。就是像保留指针的有点,规避掉由于指针操作不当而引发的各种奇怪问题。但是有些时候确实需要使用到指针运算的时候,就需要使用到unsafe包了。为什么要用unsafe包呢,说白了,就是让我们在操作指针的时候麻烦些,这样有一定几率会减少由于指针操作不当所引发的问题。

unsafe包接口介绍

1、func Alignof(x ArbitraryType) uintptr
获取变量以多数字节对齐
2、func Offsetof(x ArbitraryType) uintptr
Offsetof返回x所代表的结构体中字段的偏移量,它必须是structValue.field的形式。换言之,该方法返回结构体起始处到该字段之间的字节数。
3、func Sizeof(x ArbitraryType) uintptr
Sizeof获取变量的大小,类似于C/C++中使用sizeof(变量)返回的结果。

unsafe包中的类型

unsafe包中最重要的类型就是Pointer类型,定义如下:

type Po
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值