Golang中T any的默认值探讨
Golang中T any的默认值探讨 我有以下代码,这是来自《Go语言之旅》的一个练习。
package main
import (
"errors"
"fmt"
)
// List 表示一个可以保存任意类型值的单链表。
type List[T any] struct {
next *List[T]
val T
}
func (head List[T]) my_next() (T, error) {
if head.next == nil {
// 关于这一行的疑问
return head.val, errors.New("no next element")
}
return head.next.val, nil;
}
func main() {
l := List[int]{nil, 123};
fmt.Println(l.my_next());
}
my_next 方法旨在获取链表中的下一个元素。如果当前节点是尾节点,它应该返回一个非空的错误。
如果 head.next == nil,那么我们实际上不应该返回任何值(只应该返回一个错误)。我尝试了 return nil, errors.New("no next element"),但这无法编译。简而言之,这个例子能行得通是因为我可以直接返回 head.val 作为一个我知道是 T 类型的虚拟/占位值。
有没有办法为类型 T any 构造一个默认值?
也许我在寻找一个“可构造”或“可默认”的接口或类似的东西?
我是 Go 语言的新手,非常感谢任何帮助!
更多关于Golang中T any的默认值探讨的实战教程也可以访问 https://www.itying.com/category-94-b0.html
3 回复
可以这样做:
if head.next == nil {
var empty T
return empty, errors.New("no next element")
}
更多关于Golang中T any的默认值探讨的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我意识到自己遗漏了那样简单的东西。非常感谢你的帮助! 


