Masalah:
Anda mempunyai pakej pusat yang menyediakan antara muka dan bergantung pada pakej lain yang menawarkan pelaksanaan antara muka tersebut. Walau bagaimanapun, termasuk pakej bergantung ini dalam pakej pusat mewujudkan pergantungan kitaran, yang tidak dibenarkan oleh Go.
Penyelesaian Perpustakaan Standard:
Penyelesaian Pendaftaran Tersuai:
Memilih Penyelesaian Terbaik:
Pendekatan yang ideal bergantung pada keperluan khusus:
Contoh Kod untuk Penyelesaian Pendaftaran Tersuai:
// Package pi defines an interface I. package pi type I interface { // Some method. DoSomething() } // Package pa implements I with type A. package pa import "pi" type A struct{} func (a *A) DoSomething() { // Some implementation. } // Package pb implements I with type B. package pb import "pi" type B struct{} func (b *B) DoSomething() { // Some implementation. } // Package pf provides a factory to create instances of I. package pf import ( "pi" "pa" "pb" ) // NewClient returns an instance of I based on a flag. func NewClient(flag string) pi.I { switch flag { case "a": return &pa.A{} case "b": return &pb.B{} default: panic("Invalid flag") } }
Atas ialah kandungan terperinci Bagaimana untuk Mendaftar Pakej Go Tanpa Membuat Ketergantungan Kitaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!