[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
구문을 사용하여 제네릭 형식의 템플릿으로 작성되었습니다. 이 함수를 호출할 때는 슬라이스의 타입에 따라 자동으로 함수가 인스턴스화됩니다.
제네릭을 사용하면 코드를 더 간결하게 유지할 수 있고, 다양한 타입에 대해 재사용 가능한 함수를 작성할 수 있습니다.
결론
템플릿 확장은 고에서 코드의 재사용성과 유연성을 높일 수 있는 강력한 도구입니다. 제네릭을 사용하여 템플릿을 작성하면 코드의 유연성을 높일 뿐만 아니라 가독성을 높일 수 있습니다. 향후 프로젝트에서 템플릿 확장을 고려헤볼 때, 제네릭을 이용한 구현 방법을 고려해보세요.