Golang 在类中展示继承的程序

Golang 在类中展示继承的程序

在本文中,我们将学习使用go编程展示类中的继承。

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

示例1

Golang程序中展示继承

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

package main

import (
   "fmt"
)
// fmt package allows us to print anything

// defining a struct named games and defining a string variable in it
type games struct {
   new string
}

// function to return the string variable of the games struct
// this function is defined on the games struct and returns the string value
func (games games) AllGames() string {

   // returns new variable
   return games.new
}

// declaring another struct named cricket
type Cricket struct {

   // embedding the games struct in the cricket struct
   games
}

// declaring a struct named hockey
type hockey struct {
   // embedding the games struct in the hockey struct
   games
}

// calling the main function
func main() {

   // creating an instance to the cricket struct
   I1 := Cricket{

      // child struct can directly
      // access base struct variables
      games{
         new: "ICC tournaments",
      },
   }
   // storing the result in a variable called result
   result := I1.AllGames()

   // Accessing child struct directly from struct methods
   // printing base method using child
   fmt.Println("New game is:", result)

   // creating another instance to the hockey struct
   I2 := hockey{
      games{
         new: "Hockey tournaments",
      },
   }

   // Accessing child struct directly from struct methods
   // printing base method using child
   fmt.Println("New game is:", I2.AllGames())
}

输出

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

描述

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

  • 然后我们需要定义一个 struct。这将是等同于父类的父 struct。此外,我们为这个 struct 定义了一个函数,该函数将以字符串形式返回比赛的名称。

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

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

  • 创建 cricket struct 的一个实例,并定义其中的新字符串。请注意,该 struct 中最初没有定义名为 new 的字符串,但是我们能够使用该 struct 的属性的唯一原因是我们已经将其属性继承到了 cricket struct 中。

  • 现在调用定义在 games struct 中的 AllGames() 函数。

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

  • 通过创建 hockey struct 的实例并将结果打印到屏幕上来重复上述步骤。

示例2

Golang程序显示类的多重继承

package main

import (
   "fmt"
)

// fmt package allows us to print anything on the screen

// declaring first struct and defining a string type property in it
type first struct {

   // declaring struct variable
   base_one string
}

// declaring second struct and defining a string type property in it
type second struct {
   // declaring struct variable
   base_two string
}

// defining the function to the first struct naming PrintBase()
// this function returns a string
func (f first) printBase1() string {

   // returning the result
   return f.base_one
}

// defining the function to the second struct naming PrintBase()
// this function returns a string
func (s second) printBase2() string {

   // returning the result
   return s.base_two
}

// defining the child struct
// inheriting the properties of first and second struct to it
type child struct {

   // inheriting the parent structs first and second
   first
   second
}

// calling the main function
func main() {

   // creating an instance to the child struct
   c1 := child{

      // assigning values to parent struct through instance of child struct
      first{
         base_one: "\nmango",
      },
      second{
         base_two: "apple\n",
      },
   }

   // child struct can directly
   // access base struct methods

   // calling the function defined on the first and second struct using the child structs
   fmt.Println("Printing the values by calling the method defined on first and second struct using instance defined on child struct")
   fmt.Println(c1.printBase1())
   fmt.Println(c1.printBase2())
}

输出

Printing the values by calling the method defined on first and second struct using instance defined on child struct

mango
apple

描述

  • 首先,我们需要导入fmt包,这使得我们能够在屏幕上打印任何内容。

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

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

  • 调用main函数。

  • 创建子结构体的实例,并定义其中包含的父结构体的属性。请注意,该结构体中最初未定义字符串,但是在first和second结构体中定义了字符串的唯一原因是我们在子结构体中继承了其属性。

  • 现在调用printBase()函数。

  • 使用fmt.Println()在屏幕上打印出来。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程