Buat kepingan daripada kepingan lain tetapi daripada jenis yang berbeza

王林
Lepaskan: 2024-02-02 14:13:30
ke hadapan
506 orang telah melayarinya

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

}
Salin selepas log masuk


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

dan gunakannya:

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

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!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan