Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menggunakan Parameter Jenis dalam Kaedah Antara Muka Go?

Bagaimanakah Saya Boleh Menggunakan Parameter Jenis dalam Kaedah Antara Muka Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 08:43:10949semak imbas

How Can I Use Type Parameters in Go Interface Methods?

Menggunakan Parameter Jenis dalam Kaedah Antara Muka

Dalam cuba melaksanakan struktur data generik dalam Go, anda mengalami ralat semasa mentakrifkan antara muka lelaran dengan kaedah mengambil parameter jenis. Artikel ini menangani isu dan menyediakan penyelesaian.

Ralat Definisi Antara Muka

Kod awal mentakrifkan antara muka dengan kaedah yang mengambil parameter jenis fungsi, yang membawa kepada ralat: "jenis fungsi tidak boleh mempunyai parameter jenis." Begitu juga, mengalihkan parameter jenis ke kaedah mengakibatkan ralat: "kaedah tidak boleh mempunyai parameter jenis."

Penyelesaian: Definisi Antara Muka Generik

Seperti yang dicadangkan oleh ralat , Methoden tidak boleh mempunyai parameter jenis khusus. Sebaliknya, penyelesaiannya adalah untuk menentukan parameter jenis pada jenis antara muka itu sendiri. Ini membolehkan anda menggunakan parameter jenis dalam kaedah dalam badan antara muka.

Kod yang diperbetulkan:

type Iterator[T any] interface {
    ForEachRemaining(action func(T) error) error
    // other methods
}

Dengan parameter jenis yang ditakrifkan pada jenis antara muka, anda kini boleh menggunakannya dalam kaedah seperti yang dijangkakan:

type MyIterator[T any] struct {
    // implementation of the iterator
}

func (i *MyIterator[T]) ForEachRemaining(action func(T) error) error {
    // implementation of the ForEachRemaining method using T
    return nil
}

Contoh Penggunaan

Contoh berikut menunjukkan penggunaan antara muka lelaran generik:

package main

import (
    "fmt"
    "collection"
)

type MyIterator[T any] struct {
    // implementation of the iterator
}

func (i *MyIterator[T]) ForEachRemaining(action func(T) error) error {
    // implementation of the ForEachRemaining method using T
    return nil
}

func main() {
    myIterator := &MyIterator[int]{}
    _ = myIterator.ForEachRemaining(func(num int) error {
        fmt.Println(num)
        return nil
    })
}

Kod ini mentakrifkan lelaran generik, MyIterator, dan menggunakannya untuk lelaran pada sekeping integer, mencetak setiap nilai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Parameter Jenis dalam Kaedah Antara Muka Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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