>백엔드 개발 >Golang >Go의 인터페이스와 Go 1.18 제네릭은 어떻게 일반 함수 프로그래밍을 가능하게 합니까?

Go의 인터페이스와 Go 1.18 제네릭은 어떻게 일반 함수 프로그래밍을 가능하게 합니까?

DDD
DDD원래의
2024-12-28 18:00:23277검색

How Do Go's Interfaces and Go 1.18 Generics Enable Generic Function Programming?

Go의 일반 함수: 인터페이스와 Go 1.18의 상호 작용 공개

Go에서 다양한 유형의 값을 처리하는 능력은 다음과 같습니다. 프로그래밍의 중요한 측면. 이 기사에서는 이 기능을 달성하기 위해 Go의 기본 디자인 개념인 인터페이스 사용을 살펴봅니다.

일반 함수에 인터페이스 활용

문서에서 언급했듯이 비어 있습니다. 인터페이스는 모든 유형의 값을 허용할 수 있습니다. 이는 특정 방법 요구 사항이 부족하다는 사실에서 비롯됩니다. 다음 예를 고려하십시오.

func describe(i interface{}) {
    fmt.Printf("Type: %T | Value: %v\n", i, i)
}

이 함수는 아래에 설명된 것처럼 다양한 유형의 값을 처리할 수 있습니다.

describe(5) // "Type: int | Value: 5"
describe("test") // "Type: string | Value: test"

이 접근 방식은 기본적인 형태의 일반 기능을 제공하여 동일한 기능을 허용합니다. 유형별 구현 없이 여러 유형을 처리할 수 있습니다.

Go 1.18: 일반을 위한 새로운 시대 프로그래밍

그러나 Go 1.18이 도입되면서 일반 함수를 정의하는 보다 명확하고 강력한 방법이 가능해졌습니다. 이는 유형 매개변수와 제네릭을 사용하여 달성됩니다.

package main

import (
    "fmt"
)

// T can be any type
func Print[T any](s []T) {
    for _, v := range s {
        fmt.Print(v)
    }
}

func main() {
    // Passing list of string works
    Print([]string{"Hello, ", "world\n"})

    // You can pass a list of int to the same function as well
    Print([]int{1, 2})
}

출력:

Hello, world
12

이 새로운 구문을 사용하면 모든 유형에서 작동할 수 있는 일반 함수를 정의할 수 있으므로 더욱 향상됩니다. Go 코드의 유연성과 유형 안전성. Go 1.18의 일반 함수는 여러 유형을 처리하는 보다 간결하고 강력한 접근 방식을 제공하므로 유형별 함수 구현이 필요하지 않습니다.

위 내용은 Go의 인터페이스와 Go 1.18 제네릭은 어떻게 일반 함수 프로그래밍을 가능하게 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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