Golang中国

哈希表结构定义如下:

type HashTable struct {
    Table    map[int]*list.List
    Size     int
    Capacity int
}

type item struct {
    key   string
    value interface{}
}

list结构定义如下:

type Node struct {
    Value interface{}
    Prev  *Node
    Next  *Node
}

type List struct {
    Length int
    Head   *Node
    Tail   *Node
}

在代码下面有这样的用法

if node.Value.(*item).key == key {
    val = node.Value.(*item)
}

源代码出自

最近正在学go,想先实现一遍基本的数据结构和算法
这个node.Value.(*item).key 不太理解

谢谢大神帮忙解答一下


juntaran 于 2017-04-14 05:47 修改
1 回复
joe9i0
#1 joe9i0 • 2017-04-14 09:31

类型断言

http://yougg.github.io/static/gonote/gogrammar.html#%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5-if

package main

func f0() int {return 333}

func main() {
    x := 9
    checkType(x)
    checkType(f0)
}

func checkType(x interface{}) {
    // 断言传入的x为int类型,并获取值
    if i, ok := x.(int); ok {
        println("int: ", i)    // int:  0
    }

    if f, ok := x.(func() int); ok {
        println("func: ", f())    // func:  333
    }

    // 如果传入x类型为int,则可以直接获取其值
    a := x.(int)
    println(a)

    // 如果传入x类型不是byte,则会产生恐慌panic
    b := x.(byte)
    println(b)
}
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。