[go] 템플릿 확장

템플릿은 고에서 재사용 가능한 코드를 만들 수 있는 강력한 기능입니다. 템플릿 확장은 템플릿을 사용하여 공통 기능을 다양한 타입에 적용할 수 있게 해줍니다.

기본 템플릿

가장 기본적인 형태의 템플릿은 다음과 같습니다.

package main

import "fmt"

func printArray(arr []int) {
    for _, v := range arr {
        fmt.Println(v)
    }
}

위 코드에서 printArray 함수는 정수형 슬라이스를 인자로 받아서 그 안의 값을 출력합니다. 이 함수는 정수형 슬라이스에 대해서만 동작하며, 다른 타입에 대해서는 사용할 수 없습니다.

템플릿 확장

템플릿을 사용하여 다양한 타입에 적용할 수 있도록 하는 방법을 살펴보겠습니다.

package main

import "fmt"

// Generic 형식의 템플릿으로 함수 작성
func printSlice[T any](s []T) {
    for _, v := range s {
        fmt.Println(v)
    }
}

func main() {
    intSlice := []int{1, 2, 3}
    strSlice := []string{"one", "two", "three"}

    printSlice(intSlice) // 정수형 슬라이스 출력
    printSlice(strSlice) // 문자열 슬라이스 출력
}

위 코드에서 printSlice 함수는 T any 구문을 사용하여 제네릭 형식의 템플릿으로 작성되었습니다. 이 함수를 호출할 때는 슬라이스의 타입에 따라 자동으로 함수가 인스턴스화됩니다.

제네릭을 사용하면 코드를 더 간결하게 유지할 수 있고, 다양한 타입에 대해 재사용 가능한 함수를 작성할 수 있습니다.

결론

템플릿 확장은 고에서 코드의 재사용성과 유연성을 높일 수 있는 강력한 도구입니다. 제네릭을 사용하여 템플릿을 작성하면 코드의 유연성을 높일 뿐만 아니라 가독성을 높일 수 있습니다. 향후 프로젝트에서 템플릿 확장을 고려헤볼 때, 제네릭을 이용한 구현 방법을 고려해보세요.

참고 자료