Arrays 在golang中将矩阵打印为字符串

Arrays 在golang中将矩阵打印为字符串,arrays,string,go,Arrays,String,Go,我有一个整数矩阵,用多元数组表示。我正试图将这些数字串联成一个字符串表示,逐行逐列。我的天真方法是遍历矩阵中的所有条目,并将它们附加到一个空字符串中 但是,我得到一个错误,我的append函数说: ./main.go:xx:yy: first argument to append must be slice; have string 我的代码是: type MatString string type IntMat [3][3]Int // external constraints requi

我有一个整数矩阵,用多元数组表示。我正试图将这些数字串联成一个字符串表示,逐行逐列。我的天真方法是遍历矩阵中的所有条目,并将它们附加到一个空字符串中

但是,我得到一个错误,我的append函数说:

./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)
}

我对数组、切片和联接有什么误解?如何以迭代方式正确构建此字符串?

收集字符串切片中的元素。连接切片以生成结果

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, ""))
}
另一种方法是在[]字节中构建字符串,并在末尾转换:

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

我没有包含任何分隔符,因为问题中没有包含它们。

您可以简单地将转换后的整数连接到字符串和响应

func Matrix2String(t IntMat) MatString {
    s := ""

   for i := range t {
      for _, n := range t[i] {
          s += fmt.Sprintf("%d", n)
      }
   }

    return MatString(s)
}

字符串是不可变的。只需使用重新创建字符串的
s+=fmt.Sprintf(..
)。对
strings
slices
的注释。从技术上讲,
string
[]字节
,但它特别是一个不可变的结构。因此,您不能像您试图做的那样使用
附加
。这比我的注释要好。明白了,还有一件事我必须更改:
s=append(s,strconv.Itoa(n))