猿问

Go Golang:自定义类型的类型断言

http://play.golang.org/p/icQO_bAZNE


我正在练习使用堆排序,但是


  prog.go:85: type bucket is not an expression

  prog.go:105: cannot use heap.Pop(bucket[i].([]IntArr)) (type interface {}) as type int in assignment: need type assertion

  [process exited with non-zero status]

我收到这些错误,无法弄清楚如何正确键入断言


问题来自以下几行:


  heap.Push(bucket[x].([]IntArr), elem)


  arr[index] = heap.Pop(bucket[i].([]IntArr))

因为我想使用堆结构来从每个桶中提取值


每个桶都是 []IntArr


而且IntArr是[]int像下面


type IntArr []int

type bucket [10]IntArr

周末试了很多方法都搞不明白,不胜感激。


holdtom
浏览 401回答 2
2回答

慕姐4208626

从go 规范:对于接口类型的表达式 x 和类型 T,主要表达式x.(T)断言 x 不是 nil 并且存储在 x 中的值是 T 类型。符号 x.(T) 称为类型断言。bucket[x]不是接口类型的表达式,请在此处查看更多信息。
随时随地看视频慕课网APP

相关分类

Go
我要回答