go中的字符串和整数列表?

时间:2013-04-16 02:08:39

标签: go

我不知道我在做什么,我决定尝试使用list (docs)。这是我能想到的最多

  1. 为什么%v打印{0xf840024660 <nil> 0xf840023660 4}
  2. 为什么我没有收到与字符串混合的错误?
  3. 如何强制输入类型? (例如仅注册,仅限字符串等)
  4. 代码:

    package main
    
    import "fmt"
    import "container/list"
    
    func main() {
        ls := list.New()
        ls.PushBack("a")
        ls.PushBack(4)
        ls.PushBack("5")
        fmt.Println(ls)
        ls2 := list.New()
        ls2.PushBack(4)
        ls2.PushBack(8)
        fmt.Printf("%v\naaa\n", *ls2.Front())
        fmt.Println(*ls2.Back())
    }
    

2 个答案:

答案 0 :(得分:12)

首先,你可能不想要container/list。你可能正在寻找切片和append()之类的东西。例如:

x := []int { 1, 2, 3 }
x = append(x, 4)
x = append(x, 5, 6)

container/list允许您混合类型的原因是它使用interface{}来保存值,并且任何类型都满足空接口。

答案 1 :(得分:2)

要回答您对Front()Back()来电的第一个问题,原因是您正在打印出不包含可打印值的Element struct。如果您要打印Element.Value,则必须执行(*ls2.Front()).Value。类似的原因也适用于fmt.Println(ls)打印怪异的原因。