>백엔드 개발 >Golang >Go의 빈 인터페이스 또는 Go 1.18 Generics가 일반 기능의 진정한 구현입니까?

Go의 빈 인터페이스 또는 Go 1.18 Generics가 일반 기능의 진정한 구현입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-29 04:36:10315검색

Are Go's Empty Interfaces or Go 1.18 Generics the True Implementation of Generic Functions?

Go의 일반 함수: 종합 안내서

Go를 탐색하는 동안 빈 인터페이스의 개념을 접할 수 있습니다. 이는 추가 메서드가 필요 없이 모든 유형을 담을 수 있는 강력한 도구입니다.

다음 예를 고려하세요.

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

설명하기 위해 다양한 유형을 전달하면 유형과 값이 인쇄됩니다.

"Type: int | Value: 5" // for i := 5
"Type: string | Value: test" // for i := "test"

그럼 이것이 Go의 일반 기능 구현 방식인가요? 좀 빠지는. 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

이 일반 함수 Print는 모든 유형의 슬라이스를 처리할 수 있으며 일반 프로그래밍에 대해 보다 다양하고 유형이 안전한 접근 방식을 제공합니다.

위 내용은 Go의 빈 인터페이스 또는 Go 1.18 Generics가 일반 기능의 진정한 구현입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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