Rumah > pembangunan bahagian belakang > Golang > Adakah Antara Muka Kosong Go atau Go 1.18 Generik adalah Pelaksanaan Sebenar Fungsi Generik?

Adakah Antara Muka Kosong Go atau Go 1.18 Generik adalah Pelaksanaan Sebenar Fungsi Generik?

Patricia Arquette
Lepaskan: 2024-12-29 04:36:10
asal
314 orang telah melayarinya

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

Fungsi Generik dalam Go: Panduan Komprehensif

Semasa meneroka Go, anda mungkin menghadapi konsep antara muka kosong. Ia merupakan alat berkuasa yang boleh memuatkan sebarang jenis, tidak memerlukan kaedah tambahan.

Pertimbangkan contoh ini:

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

Apabila anda menghantar jenis yang berbeza untuk diterangkan, ia mencetak jenis dan nilai:

"Type: int | Value: 5" // for i := 5
"Type: string | Value: test" // for i := "test"
Salin selepas log masuk

Jadi, adakah ini cara Go untuk melaksanakan fungsi generik? Tidak cukup. Bermula dengan Go 1.18, anda kini boleh menulis fungsi generik sebenar. Berikut ialah contoh:

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})
}
Salin selepas log masuk

Output:

Hello, world
12
Salin selepas log masuk

Fungsi generik Cetakan ini boleh mengendalikan kepingan apa-apa jenis, menawarkan pendekatan yang lebih serba boleh dan selamat jenis kepada pengaturcaraan generik.

Atas ialah kandungan terperinci Adakah Antara Muka Kosong Go atau Go 1.18 Generik adalah Pelaksanaan Sebenar Fungsi Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan