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



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

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

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

操场

最新更新