结构类型嵌入字段访问

2023-11-25

我在尝试学习golang目前我正在尝试理解指针。我定义了三种结构类型

type Engine struct {      
    power int             
}                         
                          
type Tires struct {       
    number int            
}                         
                          
                          
type Cars struct {           
    *Engine               
    Tires                 
}       

正如您所看到的,在 Cars 结构体中我定义了一个嵌入式类型指针 *Engine。主要看一下。

func main() {                    
                                     
    car := new(Cars)             
    car.number = 4               
    car.power = 342     
    fmt.Println(car)            
} 

                           
    

当我尝试编译时,出现以下错误

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x23bb]    

如何进入能量场?


例如,

package main

import "fmt"

type Engine struct {
    power int
}

type Tires struct {
    number int
}

type Cars struct {
    *Engine
    Tires
}

func main() {
    car := new(Cars)
    car.Engine = new(Engine)
    car.power = 342
    car.number = 4
    fmt.Println(car)
    fmt.Println(car.Engine, car.power)
    fmt.Println(car.Tires, car.number)
}

Output:

&{0x10328100 {4}}
&{342} 342
{4} 4

非限定类型名称Engine and Tires作为各个匿名字段的字段名称。

Go 编程语言规范

结构类型

使用类型声明但没有显式字段名称的字段是 匿名字段,也称为嵌入字段或嵌入字段 输入结构体。嵌入类型必须指定为类型名称 T 或作为指向非接口类型名称 *T 的指针,并且 T 本身可以 不是指针类型。非限定类型名称充当字段 姓名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构类型嵌入字段访问 的相关文章