>백엔드 개발 >Golang >Go에서 함수 맵을 올바르게 정의하고 사용하는 방법은 무엇입니까?

Go에서 함수 맵을 올바르게 정의하고 사용하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-17 19:03:10894검색

How to Correctly Define and Use a Map of Functions in Go?

Go Map of Functions

함수를 문자열 키에 매핑하는 것은 Go에서 메소드를 구성하고 선택하는 데 유용한 도구가 될 수 있습니다. 그러나 일반적인 장애물은 올바른 구문과 입력을 보장하는 것입니다. Go에서 함수 맵을 효과적으로 정의하고 활용하는 방법을 살펴보겠습니다.

제공된 코드는 함수를 가리키는 문자열 키를 사용하여 맵을 생성하려고 시도합니다. 그러나 m := map[string] func {...}에 사용된 구문은 올바르지 않습니다. 함수 포인터 맵을 정의하기 위한 올바른 구문은 m := map[string]interface{}{...}입니다.

또한, 맵 키에 작은따옴표 ''를 사용하는 것은 유효하지 않습니다. 문자열 키에는 큰따옴표 ""를 사용해야 합니다.

실제 예제를 보여주기 위해 다음 코드를 고려하세요.

package main

import "fmt"

func f(p string) {
    fmt.Println("function f parameter:", p)
}

func g(p string, q int) {
    fmt.Println("function g parameters:", p, q)
}

func main() {
    m := map[string]interface{}{
        "f": f,
        "g": g,
    }
    for k, v := range m {
        switch k {
        case "f":
            v.(func(string))("astring")
        case "g":
            v.(func(string, int))("astring", 42)
        }
    }
}

여기서 맵 m이 생성됩니다. 여기서 각 키는 문자열이며 해당 값은 함수 포인터입니다. switch 문은 원하는 매개변수로 함수를 호출하기 전에 키를 확인하고 값을 적절한 함수 유형으로 캐스팅합니다. 이 접근 방식을 사용하면 제공된 키를 기반으로 동적 기능 선택 및 실행이 가능합니다.

위 내용은 Go에서 함수 맵을 올바르게 정의하고 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.