2017-01-22 3 views
-1

함수에 무언가를 전달하여 수정 가능하고 호출 스택에서 볼 수 있도록하려면 어떻게해야합니까? (즉, 포인터 또는 참조를 전달하는 방법)호출 함수에서 수정할 수 있도록 참조로 전달하는 방법?

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) 
+5

을,하지만 당신은 조각의 요소를 수정하는 일이 필요하지 않습니다 : https://play.golang.org/p/vVSIhkcUUb – JimB

답변

1

포인터의 역 참조가 우선 순위가 더 높습니다.
여기 가 작동하는 코드입니다 : 당신은 포인터를 전달하는 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) 
} 
관련 문제