请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于 空接口的一些疑问

重新回看了一遍 自己之前的笔记

看到switch 的功能
如下图
这样就判断出 x 是 一个参数为 i 返回值 为 float64 的函数
请问一下 那我如何 那着这个 x 去调用这个函数呢


func cheshi(i int) float64 {
	fmt.Println("11111111111")
	return float64(i)
}

func main() {
	var x interface{}
	x = cheshi
	
	switch i := x.(type) {
	case nil:
		fmt.Printf(" x 的类型 :%T", i)
	case int:
		fmt.Printf("x 是 int 型")
	case float64:
		fmt.Printf("x 是 float64 型")
	case func(int) float64:
		fmt.Printf("x 是 func(int) 型")
	case bool, string:
		fmt.Printf("x 是 bool 或 string 型")
	default:
		fmt.Printf("未知型")
	}
}

正在回答

1回答

interface无法直接调用,你想要当做函数一样调用,要断言为函数之后才能调用 比如 x.(func()error)() 这样就可以直接调用了

0 回复 有任何疑惑可以回复我~
  • 提问者 城中城 #1
    不是特别懂   
    x = cheshi
    x.(func()error)()
    这样?
    回复 有任何疑惑可以回复我~ 2022-05-14 23:01:13
  • bobby 回复 提问者 城中城 #2
    也就是x是一个接口可以任何值给他,但是你使用的时候无法直接使用x.xx方法,因为interface没有这个方法,所以想要使用前先将x转换为你赋值的类型 才能调用,你这里的x是一个函数那么就就要将interface转换为函数才能当作函数一样使用
    回复 有任何疑惑可以回复我~ 2022-05-17 14:36:05
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号