douaipi3965 2018-09-21 22:35

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

I have a matrix of integers, represented by a multivariate array. I'm trying to concatenate the numbers into a string representation, rows-by-columns. My naive approach is to walk over all entries in the matrix and append them to a nullstring.

However, I'm getting an error that my append function is saying:

``````./main.go:xx:yy: first argument to append must be slice; have string
``````

My code is:

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

What am I misunderstanding about arrays, slices, and joins, and how can I iteratively build up this string correctly?

• 写回答

2条回答默认 最新

• douwuying4709 2018-09-21 22:39
关注

Collect the elements in a slice of strings. Join the slice to produce the result.

``````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, ""))
}
``````

Another approach is to build the string in a []byte and convert at the end:

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

I didn't include any delimiters because the question didn't include them.

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

悬赏问题

• ¥15 我有个餐饮系统,用wampserver把环境配置好了,但是后端的网页却进去,是为什么,能不能帮远程一下？
• ¥15 R运行没有名称为"species"的插槽对于此对象类"SDMmodelCV"