gpt4 book ai didi

pointers - 如何访问结构字段,它是结构内部的指针,结构本身就是一个指针

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:23 25 4
gpt4 key购买 nike

在我下面的代码中,为什么 *bikeSlice[0].Type 返回给我的是 Type 字段的值而不是内存地址?为什么 *bikeSlice[0] 返回 {Type:0xc0000641c0} 虽然 *bikeSlice[0].Type 似乎自动取消引用 类型字段?

package main

import "fmt"

type Bike struct {
Type *string
}

func main() {
type1 := "road"

bike1 := Bike{
Type: &type1,
}

type2 := "mountain"

bike2 := Bike{
Type: &type2,
}

var bikeSlice []*Bike

bikeSlice = append(bikeSlice, &bike1)
bikeSlice = append(bikeSlice, &bike2)

fmt.Printf("%+v\n", *bikeSlice[0])
fmt.Printf("%+v", *bikeSlice[0].Type)
}

Playground :https://play.golang.org/p/2Q4Bt60SUdW

输出:

{Type:0x40e128}
road

最佳答案

是的,我认为它会自动取消引用。参见 https://golang.org/ref/spec#Selectors

我认为第 3 条规则就是您正在寻找的规则:

As an exception, if the type of x is a defined pointer type and (*x).f is a valid selector expression denoting a field (but not a method), x.f is shorthand for (*x).f.

关于pointers - 如何访问结构字段,它是结构内部的指针,结构本身就是一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54728455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com