Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Buat kepingan daripada kepingan lain tetapi daripada jenis yang berbeza

Buat kepingan daripada kepingan lain tetapi daripada jenis yang berbeza

王林
王林ke hadapan
2024-02-02 14:13:30505semak imbas

Buat kepingan daripada kepingan lain tetapi daripada jenis yang berbeza

Kandungan soalan

Adakah terdapat cara mudah dan boleh dibaca untuk membuat salinan kepingan tetapi menggunakan jenis lain? Contohnya, saya menerima sekeping int32 (mySlice []int32),但我需要它的副本,并且该副本应为 int64: copyOfMySlice []int64.

Saya memerlukan sesuatu yang serupa:

func f(s []int32) int32 {
    
    var newSlice = make([]int64, len(s))

    copy(newSlice, s) // how this can be done?

    // work with newSlice

}

Jawapan yang betul


Satu-satunya cara ialah menterjemah dan menyalin setiap elemen satu demi satu. Anda boleh menulis fungsi salin menggunakan panggilan balik fungsi:

func CopySlice[S, T any](source []S, translate func(S) T) []T {
    ret := make([]T, 0, len(source))
    for _, x := range source {
        ret = append(ret, translate(x))
    }
    return ret
}

dan gunakannya:

intSlice:=CopySlice[uint32,int]([]uint32{1,2,3},func(in uint32) int {return int(in)})

Atas ialah kandungan terperinci Buat kepingan daripada kepingan lain tetapi daripada jenis yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam