gpt4 book ai didi

go - 基本类型的解引用接口(interface)

转载 作者:行者123 更新时间:2023-12-01 22:33:49 25 4
gpt4 key购买 nike

这是我用来探索界面的一个愚蠢的例子。我将一个接口(interface)包裹在一个 int 周围,这样它就可以说出它的值(value):

package intspeaker

import (
"fmt"
)

type IntSpeaker interface {
Speak()
}

type SpeakNumber int

func (ic SpeakNumber) Speak() {
fmt.Println("My value is ", ic)
}
然后我实例化接口(interface),初始化值,并告诉它说出它的值:
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
}
有没有办法从接口(interface)中取消引用 int 值?

最佳答案

speaker包含 intspeaker.IntSpeaker 类型的具体值.使用type assertion从中获得该值(value):

var getIt intspeaker.SpeakNumber = speaker.(intspeaker.SpeakNumber)
如果您需要它作为 int ,您可以使用进一步的类型 conversion将其作为 int :
var it int = int(getIt)
您可以从变量声明中省略类型(它将从右侧的表达式中推断出来):
var getIt = speaker.(intspeaker.SpeakNumber)
var it = int(getIt)
Go Playground 上试用.

关于go - 基本类型的解引用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62816185/

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