Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mencapai Pulangan Jenis Dinamik dalam Go?

Bagaimana untuk Mencapai Pulangan Jenis Dinamik dalam Go?

Patricia Arquette
Lepaskan: 2024-12-02 05:33:14
asal
691 orang telah melayarinya

How to Achieve Dynamic Type Return in Go?

Bagaimana untuk Mengendalikan Pemulangan Jenis Dinamik di Golang?

Senario:

Dalam pembangunan Golang Revel, kod berulang timbul disebabkan kepada jenis pulangan data yang serupa yang melibatkan struct jenis. Pertimbangkan fungsi berikut:

func (c Helper) Brands() []*models.Brand {

    // Query rethinkdb and populate the Brand model
    var brands []*models.Brand
    rows.All(&brands)

    return brands

}

func (c Helper) BlogPosts() []*models.Post {

    // Query rethinkdb and populate the Post model
    var posts []*models.Post
    rows.All(&posts)

    return posts

}
Salin selepas log masuk

Dalam kedua-dua kes, jenis pemulangan adalah sama (*[]struct). Untuk mengelakkan pertindihan, pendekatan jenis pulangan dinamik dicadangkan:

func (c Helper) ReturnModels(modelName string) []*interface{} {

    // Query rethinkdb with modelName and return []*interface{}
}
Salin selepas log masuk

Soalan:

  • Adakah pengembalian jenis dinamik mungkin?
  • Bagaimana untuk melaksanakan ia?

Jawapan:

Ya, pulangan jenis dinamik boleh dicapai. Fungsi harus mengembalikan antara muka{} dan bukannya []*antara muka{}. Begini cara ia boleh dilaksanakan:

func (c Helper) ReturnModels(modelName string) interface{} {

    // Query rethinkdb with modelName and return interface{}
}
Salin selepas log masuk

Untuk menggunakan nilai yang dikembalikan, suis taip atau penegasan jenis digunakan untuk menghantarnya kembali kepada jenis asalnya:

Contoh:

if brands, ok := ReturnModels("brands").([]Brand); ok {
    // ...
}

if posts, ok := ReturnModels("posts").([]Post); ok {
    // ...
}
Salin selepas log masuk

Dengan melaksanakan pendekatan ini, pertindihan kod boleh dikurangkan dengan ketara dengan menggunakan satu pembantu fungsi untuk mendapatkan data.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pulangan Jenis Dinamik dalam Go?. 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