Maison > développement back-end > Golang > le corps du texte

Tableau de structure hérité dans Go Lang

WBOY
Libérer: 2024-02-09 09:15:22
avant
1276 Les gens l'ont consulté

Go Lang 中继承的结构体数组

Go Lang est un langage de programmation moderne qui a rapidement émergé dans le monde de la programmation pour sa simplicité et son efficacité. En Go Lang, la structure est un type de données courant qui peut être utilisé pour organiser et stocker un ensemble de données associées. Cependant, dans certains cas, nous pouvons avoir besoin de définir un tableau contenant plusieurs structures, d'opérer sur elles et d'en hériter. Cet article expliquera comment créer et utiliser des tableaux de structures héritées dans Go Lang pour mieux faire face aux structures de données complexes et aux besoins de programmation.

Contenu de la question

Récemment, j'ai commencé à créer un jeu d'échecs en golang et un problème auquel j'ai été confronté était de stocker différents personnages (c'est-à-dire un pion, un chevalier, un roi) dans un seul tableau.

package main

import "fmt"

type character struct {
    currposition [2]int
}

type knight struct {
    c character
}

func (k knight) move() {
    fmt.println("moving kinght...")
}

type king struct {
    c character
}

func (k king) move() {
    fmt.println("moving king...")
}
Copier après la connexion

Dans l'exemple ci-dessus, pouvons-nous mettre le chevalier et le roi dans le même tableau puisqu'ils héritent de la même classe de base ?

J'aime

characters := []character{Knight{}, King{}}
Copier après la connexion

Solution de contournement

Utilisez Interface de base comme Polymorphisme.

type character interface {
    move()
    pos() [2]int
}

type knight struct {
    pos [2]int
}

func (k *knight) move() {
    fmt.println("moving kinght...")
}

func (k *knight) pos() [2]int { return k.pos }

type king struct {
    pos [2]int
}

func (k *king) move() {
    fmt.println("moving king...")
}

func (k *king) pos() [2]int { return k.pos }
Copier après la connexion

Les déclarations suivantes sont compilées avec ce changement :

characters := []character{&Knight{}, &King{}}
Copier après la connexion

De plus, vous aurez peut-être besoin d'un récepteur pointeur comme dans cet exemple.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!