Go 基本类型的取消引用接口
这是我用来探索接口的一个愚蠢的例子。我将一个接口包装在一个int上,这样它就可以说出它的值:Go 基本类型的取消引用接口,go,interface,Go,Interface,这是我用来探索接口的一个愚蠢的例子。我将一个接口包装在一个int上,这样它就可以说出它的值: package intspeaker import ( "fmt" ) type IntSpeaker interface { Speak() } type SpeakNumber int func (ic SpeakNumber) Speak() { fmt.Println("My value is ",
package intspeaker
import (
"fmt"
)
type IntSpeaker interface {
Speak()
}
type SpeakNumber int
func (ic SpeakNumber) Speak() {
fmt.Println("My value is ", ic)
}
package main
import "./intspeaker"
import "fmt"
func main() {
var speaker intspeaker.IntSpeaker = intspeaker.SpeakNumber(5)
speaker.Speak()
fmt.Println(speaker) // output = 5
var getIt int = speaker // compile error: cannot use speaker
// (type intspeaker.IntSpeaker) as type int
}
然后我实例化接口,初始化值,并告诉它说出它的值:
package intspeaker
import (
"fmt"
)
type IntSpeaker interface {
Speak()
}
type SpeakNumber int
func (ic SpeakNumber) Speak() {
fmt.Println("My value is ", ic)
}
package main
import "./intspeaker"
import "fmt"
func main() {
var speaker intspeaker.IntSpeaker = intspeaker.SpeakNumber(5)
speaker.Speak()
fmt.Println(speaker) // output = 5
var getIt int = speaker // compile error: cannot use speaker
// (type intspeaker.IntSpeaker) as type int
}
有没有办法从接口中取消对int值的引用?
speaker
包含类型为intspeaker.intspeaker
的具体值。用于从中获取该值:
var getIt intspeaker.SpeakNumber = speaker.(intspeaker.SpeakNumber)
如果需要将其作为int
,可以使用另一种类型将其作为int
:
var it int = int(getIt)
您可以省略变量声明中的类型(将从右侧表达式推断):
试试这个。是的。我试过了,但语法不正确。这对我来说有点不可靠,因为我来自Java世界。@ArloGuthrie我贴了一个链接到它工作的围棋场。如果它对你不起作用,你必须发布你尝试过的代码。不,它起作用。我是说我试过这么做,但语法错误。出于某种原因,有一个计时器在标记某件事为已回答。