我觉得有点傻,因为这应该很容易,但是我刚开始使用 go 并无法弄清楚。
package main
import "fmt"
type Question struct {
q []string
a []string
}
func (item *Question) Add(q string, a string) {
n := len(item.q)
item.q[n] := q
item.a[n] := a
}
func main() {
var q Question
q.Add("A?", "B.")
}
编译时出现错误:
q.go:11:12:错误:预期的';' 或 '}' 或换行符 q.go:12:12: 错误:预期 ';' 或 '}' 或换行符
这指的是 item.q[n] := q 的左大括号和以下行。
我确定我使用的切片不正确,因为它可以用一个简单的字符串代替,但我不知道如何修复它。
编辑:我已经按照 Pat Notz 的建议使用 StringVectors 重新实现了它,并且效果很好。以下是工作代码:
package main
import (
fmt "fmt"
vector "container/vector"
)
type Question struct {
q vector.StringVector
a vector.StringVector
}
func (item *Question) Add(q string, a string) {
item.q.Push(q)
item.a.Push(a)
}
func (item *Question) Print(index int) {
if index >= item.q.Len() {
return
}
fmt.Printf("Question: %s\nAnswer: %s\n", item.q.At(index), item.a.At(index))
}
func main() {
var q Question
q.Add("A?", "B.")
q.Print(0)
}