Go lang array and slice data types
===

I am new to Go lang, but I found myself confused with array/slice data type

From Go docs arrays are described in the next way

> There are major differences between the ways arrays work in Go and C.
> In Go,
> 
> Arrays are values. Assigning one array to another copies all the
> elements. In particular, if you pass an array to a function, it will
> receive a copy of the array, not a pointer to it. The size of an array
> is part of its type. The types [10]int and [20]int are distinct.

Functions

    

> As in all languages in the C family, everything in Go is passed by
> value. That is, a function always gets a copy of the thing being
> passed, as if there were an assignment statement assigning the value
> to the parameter. For instance, passing an int value to a function
> makes a copy of the int, and passing a pointer value makes a copy of
> the pointer, but not the data it points to. (See the next section for
> a discussion of how this affects method receivers.)

But why sort.Ints(arrayValue) modifies passed variable while I did declare it as array, not as a slice

Code

    var av = []int{1,5,2,3,7}
      
    fmt.Println(av)
    sort.Ints(av)
    fmt.Println(av)
    return

Output

    [1 5 2 3 7]
    [1 2 3 5 7]