Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
354 views
in Technique[技术] by (71.8m points)

How to sort a slice in go without mutating the original slice

In Golang, I am trying to sort a slice without mutating the original value

func main() {
    originalArray := []int{4, 2, 1, 1, 2}
    newArray := originalArray
    sort.Ints(newArray)

    fmt.Printf("%v", originalArray) // prints [1 1 2 2 4]
}

How can I sort a slice in golang without mutating the original value?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to make a copy of the original slice.

Use:

newArray := make([]int, len(originalArray))
copy(newArray, originalArray)

or:

newArray := append([]int{}, originalArray...)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...