小编Mar*_*tin的帖子

使用泛型:类型 *T 是指向类型参数的指针,而不是类型参数

可能是 golang 初学者的问题:)

尝试编译下面的代码时,我遇到以下编译器错误。

我想为共享公共 ID 字段的不同类型(此处为 A 和 B)实现一个对象存储。遵循 DRY 的想法,我想使用泛型来实现商店。

添加对象时,我想使用 GS 接口设置其 ID 字段(当然实际代码要复杂一点),但编译器不希望我这样做。

./prog.go:29:7: item.SetId undefined (类型 *T 是指向类型参数的指针,而不是类型参数)

./prog.go:34:24:A 未实现 GS(SetId 方法有指针接收器)

有推荐的方法来解决这个问题吗?提前致谢!!

package main

import "fmt"

type A struct {
    ID      string
    AMember string
}
type B struct {
    ID      string
    BMember string
}

type GS interface {
    Id() string
    SetId(string)
}

func (s A) Id() string      { return s.ID }
func (s *A) SetId(i string) { s.ID = i }
func (s B) …
Run Code Online (Sandbox Code Playgroud)

generics go

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

generics ×1

go ×1