Tatasusunan struktur yang diwarisi dalam Go Lang

WBOY
Lepaskan: 2024-02-09 09:15:22
ke hadapan
1276 orang telah melayarinya

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...")
}
Salin selepas log masuk

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{}}
Salin selepas log masuk

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 }
Salin selepas log masuk

Pernyataan berikut disusun bersama perubahan ini:

characters := []character{&Knight{}, &King{}}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!