MST

星途 面试题库

面试题:Go语言中嵌入式结构体的字段访问规则

在Go语言中,当一个结构体嵌入另一个结构体时,描述一下外部结构体如何访问嵌入结构体的字段和方法,并举一个简单的代码示例说明。
47.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 访问方式
    • 当一个结构体嵌入另一个结构体时,外部结构体可以直接访问嵌入结构体的字段和方法,就好像这些字段和方法是外部结构体自己的一样。这是因为Go语言的结构体嵌入实现了一种类似继承的行为(但不是传统面向对象语言中的继承)。
  2. 代码示例
package main

import "fmt"

// 定义一个基础结构体
type Base struct {
    Field1 string
}

// 基础结构体的方法
func (b *Base) Method1() {
    fmt.Println("This is Method1 of Base")
}

// 定义一个包含嵌入结构体的外部结构体
type Outer struct {
    Base
    Field2 int
}

func main() {
    o := Outer{
        Base: Base{
            Field1: "Hello",
        },
        Field2: 10,
    }
    // 访问嵌入结构体的字段
    fmt.Println(o.Field1)
    // 访问嵌入结构体的方法
    o.Method1()
}

在上述代码中,Outer结构体嵌入了Base结构体。在main函数中创建Outer结构体实例o后,可以直接通过o.Field1访问嵌入结构体Base的字段Field1,通过o.Method1()访问嵌入结构体Base的方法Method1