zoukankan      html  css  js  c++  java
  • go指针-1

    golang精选博文翻译仓库

    原文地址

    go的指针类似C指针,都是一个指向其他值的值。这是一个十分重要的概率,并且它不应该被认为是危险且无法判断的。

    在go中的指针有几个相比于C/C++改善的地方:

    1. 没有指针运算,你不能在go中这样写

      var p *int
      p++
      

      也就是你不能更改指针p指向的地址,除非你给它赋值其他地址。

    2. 这意味这在go中没有指针数列。

    3. 一旦一个值被赋予一个指针了,除了nil这种特殊的情况,go保证被指向的对象在指针的生命周期内都有效。因此:

      func f() *int { 
              i := 1
              return &i
      }
      

      这段代码在go中是安全的,编译器将会安排一块内存地址给变量i使得在f()返回后有效。

    4. 空指针,在go中你仍可以将指针指向空值以及因空指针而引起的panic,但与Java不同,在Java中因空指针而报错的情况在go中并不存在。我认为有以下三个原因

      1. 多返回值,空值不在是被作为错误情况的标记。很明显,这留下了程序员不检查错误的问题,但是这只是一个习惯问题。

      2. String是值类型,而不是指针,我认为,在像Java和C++中,空指针异常情况是最多的。

        var s string
        

        在上面这段代码中,s的默认空值是"",而不是nil

      3. 事实上,大多内置的数据类型,maps,slices,channels和arrays都有一个合理的默认值,如果他们没有被初始化。

  • 相关阅读:
    接口的设置
    总结一下《vue的使用》
    标准时间对象的转换
    类数组转换为数组
    异步函数
    vue中moudles的作用及使用方法
    es5数组的新方法
    React JSX
    React更新元素 基础
    React将某段文字插入到某个元素里
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12716382.html
Copyright © 2011-2022 走看看