gpt4 book ai didi

go - 函数类型不能有类型参数

转载 作者:行者123 更新时间:2023-12-03 10:08:41 29 4
gpt4 key购买 nike

我正在尝试编写一个示例程序来尝试使用 go2 中提出的 go generic 来实现数据结构。
作为其中的一部分,我想定义一个迭代器接口(interface)。我有以下代码:

package collection

type Iterator interface {
//ForEachRemaining Performs the given action for each remaining element until all elements have been processed or
//the action throws an error.
ForEachRemaining(action func[T any](T) error) error

//HasNext returns true if the iteration has more elements.
HasNext() bool

//Next returns the next element in the iteration.
Next() error

//Remove removes from the underlying collection the last element returned by this iterator (optional operation).
Remove() error
}

它不断给我以下错误
function type cannot have type parameters
有没有办法定义通用接口(interface)

最佳答案

正如错误所示,methods cannot have type parameters根据最新的设计他们自己的。但是,它们可以使用它们所属的接口(interface)或结构中的泛型。
您需要在接口(interface)类型上指定类型参数,如下所示:

type Iterator[T any] interface {
// ...
}
然后使用 T作为接口(interface)主体内方法中的任何其他类型参数。例如:
package main

import "fmt"

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

func main() {
fmt.Println("This program compiles")
}
试用 Go playground .

关于go - 函数类型不能有类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64189810/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com