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

时间:2018-09-21 22:35:44

标签: arrays string go

我有一个整数矩阵,由一个多元数组表示。我正在尝试将数字连接成字符串表示形式(逐列)。我幼稚的方法是遍历矩阵中的所有条目,并将它们附加到空字符串中。

但是,我收到一个错误,我的附加函数在说:

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

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

2 个答案:

答案 0 :(得分:3)

收集一片字符串中的元素。加入切片以产生结果。

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

我没有包括任何定界符,因为问题没有包括它们。

答案 1 :(得分:0)

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

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

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

    return MatString(s)
}

Playground