309得票10回答
类型转换接口切片

我很好奇为什么Go语言在将T隐式转换成interface{}时,却不会将[]T隐式转换成[]interface{}。这种转换有什么非常规的地方吗? 例如: func foo([]interface{}) { /* do something */ } func main() { v...

22得票3回答
接口和指针接收器

我是新手gopher,正在努力理解指针接收器和接口。 type Foo interface { foo() } type Bar struct {} func (b *Bar) foo() {} 根据以上定义... --- Allowed --------- b := Bar{...

21得票1回答
在Go语言中,我如何检查一个值是否为(任何)指针类型?

我有一个 interface{} 切片,我需要检查这个切片中是否包含指针字段值。 澄清示例:var str *string s := "foo" str = &s var parms = []interface{}{"a",1233,"b",str} index := getPoin...

12得票3回答
如何在Golang中保持DRY的代码

EDIT++: 如何在Go中避免重复代码? type Animal interface { Kingdom() string Phylum() string Family() string } type Wolf struct {} type Tiger stru...

10得票4回答
在Golang中,消费者如何为接受接口的函数定义一个接口?

如果我正确理解了Go的实践,调用者(也称为消费者)应该定义他们想从它们的依赖项(也称为生产者)中使用的接口。 不过,如果生产者有一个接受自定义类型的函数,那么最好让它接受一个接口,对吗?这样,消费者可以只传递一些符合生产者接口的值,而无需知道确切的类型。因为进入生产者函数的输入值使生产者成为...

9得票1回答
在Golang中将Json.Number转换为int/int64/float64

我有一个变量名为data,它是一个接口类型。当我打印它的类型时,显示为json.Number。如何将其转换为int/int64/float64类型?如果我尝试使用data.(float64)进行类型转换,会出现panic错误。 panic: interface conversion: int...

9得票4回答
Golang中的空接口

编辑: 在Go语言中不应该这样使用接口。提问的目的是让我理解在Go语言中空接口(interface{})的工作原理。 如果所有类型都实现了interface{}(空接口),为什么我不能访问Cat和Dog结构体中的name字段?如何通过函数sayHi()访问每个结构体的名称字段? packa...

8得票1回答
理解嵌套接口(嵌入式接口)

我将尝试理解以下代码中的接口嵌入。 我有以下内容: type MyprojectV1alpha1Interface interface { RESTClient() rest.Interface SamplesGetter } // SamplesGetter has a...

7得票1回答
我该如何在go语言中实现可比较接口?

我最近开始学习Go语言并遇到了以下问题。我想要实现Comparable接口。我有如下代码: type Comparable interface { compare(Comparable) int } type T struct { value int } func (item...