본문으로 바로가기
COMMUNITY모든 이야기

Go에서 goroutine 내부의 슬라이스 수정 사항이 외부에서 반영되지 않는 이유

빗방울 2026.10.31 06:12 1분 읽기 조회 16 · 추천 2

서버 요청 데이터를 처리하기 위해 고루틴을 띄워 슬라이스 값을 업데이트하려고 하는데 값이 계속 빈 상태로 나와요.

코드:

package main

import (
	"fmt"
	"sync"
)

func main() {
	var wg sync.WaitGroup
	data := []string{}

	wg.Add(1)
	go func() {
		defer wg.Done()
		data = append(data, "success")
	}()

	wg.Wait()
	fmt.Println(data)
}

오류: 출력 결과가 ["success"]가 나와야 하는데 [] 빈 슬라이스로 출력됩니다.

시도: sync.WaitGroup을 사용해서 고루틴이 끝날 때까지 기다렸는데도 결과가 그대로입니다.

질문: 고루틴 내부에서 append를 통해 슬라이스에 값을 추가했는데 왜 메인 함수에서는 반영이 안 되는 건가요?

모든 이야기1511

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1511개의 이야기
댓글