9

我不知道我在做什么,我决定尝试在 go 中使用列表(文档)。这是我能想到的最多的

  1. 为什么要打印 %v {0xf840024660 <nil> 0xf840023660 4}
  2. 为什么将整数与字符串混合时没有收到错误消息?
  3. 如何强制类型?(例如仅整数,仅字符串等)

代码:

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())
}
4

2 回答 2

29

首先,你可能不想要container/list. 您可能正在寻找像 slices 和append(). 例如:

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

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

于 2013-04-16T02:15:56.363 回答
2

要回答调用Front()and的第一个问题Back(),这是因为您要打印出不包含可打印值的Element结构。如果你想打印Element.Value你必须做的(*ls2.Front()).Value。类似的原因也适用于fmt.Println(ls)打印奇怪的原因。

于 2013-04-23T14:39:52.593 回答