Go语言如何向已初始化的[][]interface{}中追加字符串?
解决[][]interface{}类型数组追加元素的维度问题
问题核心是你错误地给外层数组追加了新的子切片,而不是把元素加到已有的第一个子切片里。
错误代码示例(导致当前输出)
package main import "fmt" func main() { matrix := [][]interface{}{{"cat", "cat", "cat"}} // 错误:直接给matrix追加新的子切片,导致多了一个子数组 matrix = append(matrix, []interface{}{"tiger"}) fmt.Println(matrix) // 输出:[[cat cat cat] [tiger]] }
正确实现方式(得到期望结果)
要将"tiger"追加到第一个子切片中,需要操作matrix的第一个元素(即目标子切片),再将结果赋值回原位置:
package main import "fmt" func main() { matrix := [][]interface{}{{"cat", "cat", "cat"}} // 正确:向第一个子切片追加元素 matrix[0] = append(matrix[0], "tiger") fmt.Println(matrix) // 输出:[[cat cat cat tiger]] }
关键说明
[][]interface{}是二维切片,外层切片的每个元素都是一个子切片。- 直接用
append(matrix, ...)会给外层切片添加新的子切片,增加维度; - 要给某个子切片追加元素,需通过索引定位到该子切片(如
matrix[0]),再对其执行append操作并赋值回原索引位置。
内容的提问来源于stack exchange,提问作者aakash singh
相关产品推荐
相关产品推荐

