Menu
Coddy logo textTech

함수 스코프 기초

Coddy GO 여정의 기초 섹션에 포함된 레슨 — 109개 중 58번째.

Go에서 함수 내부에서 선언된 변수들은 해당 함수 내에서만 접근 가능합니다. 이를 함수 스코프(function scope)라고 합니다.

지역 변수를 사용하는 함수를 생성합니다:

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // 지역 변수
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // 에러: tax는 여기서 접근할 수 없습니다
}

출력 결과에는 반환된 값만 표시됩니다:

Total: 22

변수 taxcalculateTotal 함수 내부에서만 존재하며 main에서 접근할 수 없습니다.

challenge icon

챌린지

초급

이 챌린지에서는 Go의 함수 스코프를 이해하는 연습을 합니다. 스코프 문제가 있는 간단한 프로그램을 수정해야 합니다.

이 프로그램에는 전역 변수 message와 이를 수정하려고 시도하는 함수가 있습니다. 여러분의 과제는 함수가 전역 변수를 올바르게 업데이트하도록 코드를 수정하는 것입니다.

치트 시트

함수 내부에서 선언된 변수는 해당 함수 내에서만 접근 가능합니다 (함수 스코프):

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // 지역 변수
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // 에러: tax는 여기서 접근할 수 없습니다
}

지역 변수는 해당 함수 내에서만 존재하며 외부에서는 접근할 수 없습니다.

직접 해보기

package main

import "fmt"

// 전역 변수
var message string = "Hello from global scope"

func updateMessage() {
    // 이것은 전역 변수를 수정하는 대신 새로운 지역 변수를 생성합니다
    message := "Hello from function scope"
    fmt.Println("Inside function:", message)
}

func main() {
    fmt.Println("Before function call:", message)
    updateMessage()
    
    // TODO: 전역 message는 여전히 원래 값입니다
    // 전역 변수를 변경하도록 updateMessage() 함수를 수정하세요
    fmt.Println("After function call:", message)
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨