相关疑难解决方法(0)

Go指针规则,参考文献,解除引用:

我是GoLang的新手,来自Delphi,C++世界 - 对这种语言非常兴奋,我认为注定要成为"下一个大事".

我试图解决Go解析器和编译器如何处理指针和引用 - 似乎找不到任何明确规则布局的地方.

例如,在下面的代码示例中,返回类型*list.List和局部变量l是指针类型,并且*在其声明中需要指针符号,但在使用时不必取消引用它们:l.PushBack(i).但在同一代码中,输入参数value *int64被声明为指针,必须取消引用才能正确使用:var i int64 = *value / 2

我假设这是因为list.List是一个引用类型,因此解除引用在使用时是隐式的,int64而是一个值类型,必须像处理值类型的任何指针一样处理,例如在C++中:必须取消引用它.

让我感到困惑的是,即使*list.List必须*使用列表实例声明为指针类型,也不需要解除引用.这让我最初很困惑.那是"就是它的样子",还是我错过了什么?

样品:

func GetFactors(value *int64) *list.List {

    l := list.New()

    l.PushBack(*value)

    var i int64 = *value / 2

    for ; i > 1; i-- {

        if *value%i == 0 {

            l.PushBack(i)

        }
    }

    return l

}
Run Code Online (Sandbox Code Playgroud)

pointers reference pass-by-reference go

3
推荐指数
1
解决办法
1295
查看次数

标签 统计

go ×1

pass-by-reference ×1

pointers ×1

reference ×1