【发布时间】:2016-08-25 03:34:32
【问题描述】:
我正在尝试在 Golang 中创建一个通用的二叉树。如何比较来自接口的数据和代码中的输入数据?这是我正在尝试做的一个例子。给我带来麻烦的比较是这样的
} else if cur.data < data {
-
package DSAA
type TreeNode struct {
data interface{}
right *TreeNode
left *TreeNode
}
type BinarySearchTree struct {
root *TreeNode
}
func BSTCreate() *BinarySearchTree {
return &BinarySearchTree{nil}
}
func (b *BinarySearchTree) Insert(cur TreeNode, data interface{}) *BinarySearchTree {
if &cur == nil {
cur := &TreeNode{data, nil, nil}
} else if cur.data < data {
b = b.Insert(*cur.left, data)
} else {
b = b.Insert(*cur.right, data)
}
return b
}
【问题讨论】:
-
运行时数据中有什么?
-
使用reflect.TypeOf()检查运行时类型是否相同
-
我计划将其设为字符串或整数。类似于在 java 中使用
和 .compareTo() -
Go 不是 Java。你可能会从github.com/emirpasic/gods/blob/master/trees/btree/btree.go得到一些灵感
标签: go data-structures