これは簡単なはずなので、少しばかげているように感じますが、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)
}