The idea of this is pretty simple:

We check whether the previous number is greater than the current number. If it is switch the two values in the array around and subtract two from i (i = The current position). After that we subtract 2 from i because we want to go back by one position. We subtract 2 to go back 1 because we add one to i in the for loop. We keep on doing this and we get arr sorted.

for i := 1; i < len(arr); i++ {
    if i >= 1 && arr[i-1] > arr[i] {
        arr[i-1], arr[i] = arr[i], arr[i-1]
        i -= 2
    }
}

An Edited Vertion: (If you don’t understand the i -= 2 part look at the following vertion)

i := 1

for i < len(arr) {
    if i >= 1 && arr[i-1] > arr[i] {
        arr[i-1], arr[i] = arr[i], arr[i-1]
        i--
    }
}