最近在项目开发的过程中,使用了for range 去遍历一个切片然后进行赋值,但是总是赋值不上
具体代码如下:
MultiplePaperQuestions := make([]MultiplePaperQuestion, len(p.MultipleQuestionIds))
for i, multiplePaperQuestion := range MultiplePaperQuestions {
multiplePaperQuestion.MultipleQuestion = MultipleQuestions[i]
multiplePaperQuestion.Score = p.MultipleQuestionEachScores[i]
}
我们使用for range 去遍历了MultiplePaperQuestions,然后对取到的每个multiplePaperQuestion进行赋值,但是发现无法做到。
经过一番查询得知,for range在遍历的时候,会进行拷贝,也就是把MultiplePaperQuestions 进行拷贝,然后在for range中的操作就不会再影响到原来的MultiplePaperQuestions 。
如果要对一个切片内部元素进行赋值或者修改的时候,应该使用for i ,也不能使用for range.