2014-07-09 5 views
1

정말 간단합니다. for 문 안에있는 if 문에서 정보를 가져올 때 for 루프 외부로 전달되지 않습니다. if 문 내에서 정보를 인쇄 한 다음 나중에 잃어 버릴 수 있습니다. 내가 놓친 게 있니? 파이썬에서부터 나는 전에 이것을 경험하지 못했습니다.for 루프에서 예기치 않은 동작이 발생했습니다.

func main() { 
    var neededinfo string 
    for _, slice := range info_slices { 
     // Get information out of slices 
     if strings.Contains(slice, "indicator ") { 
      neededinfo := string(ExeSH("echo '" + slice + "' | awk '{ print $4 }'")) 
      neededinfo = neededinfo[1:len(neededinfo)-2] 
      fmt.Println(neededinfo) // Returns my information 
     } 
    } 
    fmt.Println(neededinfo) // Returns nothing 
} 
+2

은 왜 초기화하는'neededinfo' 다시 루프 내부에? – ymg

+0

if 문 다음에 첫 줄에 콜론을 제거한 다음'var'가 기술적으로 변수를 초기화하기 때문에 작동하는지 확인합니다. – ymg

+0

@ YasirG. 당신은 자리에 있었고, var는 덮어 쓰여지고있었습니다. – sunshinekitty

답변

2

대부분의 경우 당신이 덮어 쓰기를하고 있다는 사실이다 neededinfo 변수

func main() { 
    var neededinfo []string 
    for _, slice := range info_slices { 
     // Get information out of slices 
     if strings.Contains(slice, "indicator ") { 
      response := string(ExeSH("echo '" + slice + "' | awk '{ print $4 }'")) 
      neededinfo = append(neededinfo, response[1:len(response)-2] 
     } 
    } 
    fmt.Println(neededinfo) 
} 
관련 문제