Golang 程序显示类中的继承

go programmingserver side programmingprogramming更新于 2025/5/12 15:22:17

在本文中,我们将学习使用 Go 编程在类中显示继承。

Golang 中的继承 - 面向对象编程中的关键思想之一是继承,它指的是将超类的属性传递给基类。由于 Golang 不支持类,因此继承通过结构嵌入进行。由于结构不能直接扩展,我们必须使用组合的思想来使用结构创建新对象。所以,可以肯定地说,Golang 不支持继承。

示例 1

Golang 程序显示类中的继承

以下代码展示了如何在 Go 编程语言中显示继承。

package main

import (
   "fmt"
)
// fmt 包允许我们打印任何内容

// 定义一个名为 games 的结构并在其中定义一个字符串变量
type games struct {
    new string
}

// 返回 games 结构的字符串变量的函数
// 此函数在 games 结构上定义并返回字符串值
func (games games) A​​llGames() string {
    
    // 返回新变量
    return games.new
}

// 声明另一个名为 cricket 的结构
type Cricket struct {

    // 将 games 结构嵌入 cricket 结构中
    games
}

// 声明一个名为 hockey 的结构
type hockey struct {
    // 将 games 结构嵌入 hockey 结构中
    games
}

// 调用主函数
func main() {
    
    // 创建 cricket 结构体的一个实例
    I1 := Cricket{
    
        // 子结构体可以直接
        // 访问基本结构体变量
        games{
            new: "ICC tournaments",
        },
    }
    // 将结果存储在名为 result 的变量中
    result := I1.AllGames()
    
    // 直接从结构体方法访问子结构体
    // 使用子结构体打印基本方法
    fmt.Println("新游戏是:", result)
    
    // 创建 hockey 结构体的另一个实例
    I2 := hockey{
        games{
            new: "Hockey tournaments",
        },
    }
    
    // 直接从结构体方法访问子结构体
    // 使用子结构体打印基本方法
    fmt.Println("New game is:", I2.AllGames())
}

输出

New game is: ICC tournaments
New game is: Hockey tournaments

描述

  • 首先,我们需要导入 fmt 包,以便我们在屏幕上打印任何内容。

  • 然后我们需要定义一个结构。这将是与父类等效的父结构。此外,我们为该结构定义了一个函数,它将以字符串形式返回锦标赛的名称。

  • 此外,我们正在创建两个名为 cricket 和 hockey 的新结构,这些结构继承了名为 games 的父结构的所有属性,并将成为子结构或类。

  • 调用主函数,这是我们程序的起点,代码从这一点开始执行。

  • 创建 cricket 结构的实例并定义其中存在的新字符串。请注意,名为 new 的字符串最初并未在此结构中定义,但在 games 结构中,我们能够使用该结构的属性的唯一原因是我们在 cricket 结构中继承了它的属性。

  • 现在调用为 games 结构定义的 AllGames() 函数。

  • 将其返回的值存储在名为 result 的变量中,并使用 fmt.Println() 将其打印在屏幕上。

  • 重复上述步骤,创建 hockey 结构的实例并将结果打印到屏幕上。

示例 2

Golang 程序显示对一个类的多重继承

package main

import (
   "fmt"
)

// fmt 包允许我们在屏幕上打印任何内容

// 声明第一个结构并在其中定义一个字符串类型属性
type first struct {

    // 声明结构变量
    base_one string
}

// 声明第二个结构并在其中定义一个字符串类型属性
type second struct {
    // 声明结构变量
    base_two string
}

// 将函数定义为第一个结构,命名为 PrintBase()
// 此函数返回一个字符串
func (f first) printBase1() string {

    // 返回结果
    return f.base_one
}

// 将函数定义为第二个结构,命名为 PrintBase()
// 此函数返回一个字符串
func (s second) printBase2() string {
    
    // 返回结果
    return s.base_two
}

// 定义子结构
// 将第一个和第二个结构的属性继承给它
type child struct {

    // 继承父结构 first 和 second
    first
    second
}

// 调用主函数
func main() {

    // 创建子结构体的实例
    c1 := child{
    
    // 通过子结构体的实例将值赋给父结构体
    first{
    base_one: "\nmango",
    },
    second{
    base_two: "apple\n",
    },
    }
    
    // 子结构体可以直接
    // 访问基结构体方法
    
    // 使用子结构体调用在第一个和第二个结构体上定义的函数
    fmt.Println("通过使用在子结构体上定义的实例调用在第一个和第二个结构体上定义的方法打印值")
    fmt.Println(c1.printBase1())
    fmt.Println(c1.printBase2())
}

输出

通过使用在子结构体上定义的实例调用在第一个和第二个结构体上定义的方法打印值结构

mango
apple

描述

  • 首先,我们需要导入 fmt 包,以便我们在屏幕上打印任何内容。

  • 然后我们定义了两个结构,分别名为 first 和 second。它们将是父结构。此外,我们为这些结构定义了一个返回字符串的函数。

  • 然后,我们需要创建一个子结构,该结构将继承父结构的所有属性。

  • 调用主函数。

  • 创建子结构的实例并定义其中存在的父结构的属性。请注意,字符串最初并未在此结构中定义,但在第一个和第二个结构中,我们能够使用该结构的属性的唯一原因是我们在子结构中继承了其属性。

  • 现在调用 printBase() 函数。

  • 使用 fmt.Println() 将其打印在屏幕上。


相关文章