栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

定位指针,引用,取消引用的规则:

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

定位指针,引用,取消引用的规则:

List
拥有
*List
接收者的所有方法:(http://golang.org/pkg/container/list/)

func (l *List) Back() *Elementfunc (l *List) Front() *Elementfunc (l *List) Init() *List...func (l *List) Remove(e *Element) interface{}

在您的示例

l
中,类型为
*List
,因此无需取消引用它们。

假设您有这样的事情:

type A struct{}func (a  A) X() {    fmt.Println("X")}func (a *A) Y() {    fmt.Println("Y")}

您可以写:

a := A{}a.X()a.Y() // == (&a).Y()

或者,您可以执行以下操作:

a := &A{}a.X() // same like == (*a).X()a.Y()

但这仅适用于方法接收器。Go不会自动转换函数参数。鉴于以下功能:

func A(x *int) {    fmt.Println(*x)}func B(y int) {    fmt.Println(y)}

这是无效的:

A(5)

您必须这样做:

var x int A(&x)

这也是无效的:

var y *intB(y)

您必须这样做:

B(*y)

与C#或Java不同,当涉及到结构时,Go不会在引用类型和值类型之间进行区分。A

*List
是一个指针,a
List
不是。
List
仅修改字段会修改本地副本。修改修改后的字段
*List
会修改所有“副本”。(因为它们不是副本…它们都指向内存中的同一件事)

有些类型似乎隐藏了基础指针(例如切片包含指向数组的指针),但是Go总是按值传递。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号