zoukankan      html  css  js  c++  java
  • 深度解密Go语言之unsafe

    深度解密Go语言之unsafe

    限制一:Go的指针不能进行数学运算

    来看一个简单的例子:

    a := 5p := &a
    p++p = &a + 3
    

    上面的代码将不能通过编译,会报编译错误:invalid operation,也就是说不能对指针做数学运算。

    限制二:不同类型的指针不能相互转换

    例如下面这个简短的例子:

    func main() {    a := int(100)    var f *float64
        f = &a}
    

    也会报编译错误:

    cannot use &a (type *int) as type *float64 in assignment
    

    关于两个指针能否相互转换,参考资料中 go 101 相关文章里写得非常细,这里我不想展开。个人认为记住这些没有什么意义,有完美主义的同学可以去阅读原文。当然我也有完美主义,但我有时会克制,嘿嘿。

    限制三:不同类型的指针不能使用==或!=比较

    只有在两个指针类型相同或者可以相互转换的情况下,才可以对两者进行比较。另外,指针可以通过 ==!= 直接和 nil 作比较。

    限制四:不同类型的指针变量不能相互赋值

    这一点同限制三。

    参考

    https://mp.weixin.qq.com/s/OO-kwB4Fp_FnCaNXwGJoEw

  • 相关阅读:
    smarty基础
    smarty变量
    Google的Python代码格式化工具YAPF详解
    性能监控工具YourKit
    Scala学习笔记2
    Scala介绍
    线段树
    字符串分割方法
    Trie树
    Scala 学习笔记
  • 原文地址:https://www.cnblogs.com/zhouj-happy/p/10972863.html
Copyright © 2011-2022 走看看