我有一个整数矩阵,由一个多元数组表示。我正在尝试将数字连接成字符串表示形式(逐列)。我的幼稚方法是遍历矩阵中的所有条目,并将它们附加到空字符串中。
但是,我收到一个错误,我的附加函数在说:
./main.go:xx:yy: first argument to append must be slice; have string
我的代码是:
type MatString string
type IntMat [3][3]Int // external constraints require fixed size, symmetric.
func Matrix2String(t IntMat) MatString {
// s var string
s := ""
for i := range t {
for j := range t[i] {
s = append(s[:], fmt.Sprintf("%s", j))
// fmt.Sprintf(s)
}
}
return MatString(s)
}
我对数组, slice 和联接有什么误解,如何正确地迭代构建此字符串?
最佳答案
将元素收集在一片字符串中。连接 slice 以产生结果。
func Matrix2String(t IntMat) MatString {
var s []string
for i := range t {
for _, n := range t[i] {
s = append(s, fmt.Sprintf("%d", n))
}
}
return MatString(strings.Join(s, ""))
}
另一种方法是将字符串构建为[] byte并在末尾进行转换:
func Matrix2String(t IntMat) MatString {
var s []byte
for i := range t {
for _, n := range t[i] {
s = strconv.AppendInt(s, int64(n), 10)
}
}
return MatString(s)
}
我没有包括任何定界符,因为问题没有包括它们。