Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tatasusunan struktur yang diwarisi dalam Go Lang

Tatasusunan struktur yang diwarisi dalam Go Lang

WBOY
WBOYke hadapan
2024-02-09 09:15:221294semak imbas

Go Lang 中继承的结构体数组

Go Lang ialah bahasa pengaturcaraan moden yang telah muncul dengan cepat dalam dunia pengaturcaraan kerana kesederhanaan dan kecekapannya. Dalam Go Lang, struktur ialah jenis data biasa yang boleh digunakan untuk menyusun dan menyimpan set data yang berkaitan. Walau bagaimanapun, dalam beberapa kes, kita mungkin perlu menentukan tatasusunan yang mengandungi berbilang struktur, beroperasi padanya dan mewarisi daripadanya. Artikel ini akan memperkenalkan cara membuat dan menggunakan tatasusunan struktur yang diwarisi dalam Go Lang untuk menangani struktur data yang kompleks dan keperluan pengaturcaraan dengan lebih baik.

Kandungan soalan

Baru-baru ini saya mula membina permainan catur dalam golang dan salah satu isu yang saya hadapi ialah menyimpan watak yang berbeza (iaitu bidak, kesatria, raja) dalam satu susunan.

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...")
}

Dalam contoh di atas, bolehkah kita meletakkan ksatria dan raja dalam susunan yang sama kerana mereka mewarisi daripada kelas asas yang sama?

Suka

characters := []character{Knight{}, King{}}

Penyelesaian

Gunakan Antara Muka Asas sebagai polimorfisme.

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 }

Pernyataan berikut disusun bersama perubahan ini:

characters := []character{&Knight{}, &King{}}

Selain itu, anda mungkin memerlukan penerima penunjuk seperti dalam contoh ini.

Atas ialah kandungan terperinci Tatasusunan struktur yang diwarisi dalam Go Lang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam