如何通过引用传递,以便可以在调用函数中对其进行修改?

How can I pass something to a function such that it is modifiable and can be seen in the calling stack ? ( in other words how to pass a pointer or a reference ? )

package main

import (
    "os/exec"
    "fmt"
)

func process(names *[]string) {
    fmt.Print("Pre process", names)
    names[1] = "modified"
}

func main() {    
    names := []string{"leto", "paul", "teg"}
    process(&names)

    fmt.Print("Post process", names)
}

Error:
invalid operation: names[0] (type *[]string does not support indexing)

Dereferencing a pointer has higher precedence.
Here is a code that works: https://play.golang.org/p/9Bcw_9Uvwl

package main

import (
    "fmt"
)

func process(names *[]string) {
    fmt.Println("Pre process", *names)
    (*names)[1] = "modified"
}

func main() {
    names := []string{"leto", "paul", "teg"}
    process(&names)
    fmt.Println("Post process", names)
}