Le modèle d'adaptateur dans Golang est un modèle de conception couramment utilisé, qui peut nous aider à convertir des interfaces incompatibles en interfaces compatibles. Grâce aux adaptateurs, nous pouvons réaliser l'interopérabilité entre différents systèmes et différentes classes, et améliorer la flexibilité et la réutilisabilité du code. L'éditeur PHP Banana présentera en détail le concept, les scénarios d'application et les méthodes d'implémentation du modèle d'adaptateur dans cet article pour aider les lecteurs à mieux comprendre et appliquer ce modèle de conception. Que vous soyez un développeur débutant ou expérimenté, vous pouvez acquérir des connaissances et des compétences pratiques grâce à cet article et approfondir votre compréhension du modèle d'adaptateur Golang. Explorons ensemble ce modèle de conception amusant et pratique !
J'essaie de créer un modèle d'adaptateur dans Golang, je ne sais pas ce que j'ai fait de mal. Mon client.go affiche une erreur
c.broker.placeorder 未定义(类型 exchange.exchange 没有字段或方法 placeorder)
main.go
package main import ( "context" "oms/consumer" ) func main() { ctx := context.background() consumer.consumer(ctx) }
consumer.go
package consumer import ( "context" "fmt" "oms/broker" ) func consumer(ctx context.context) { broker.execute() }
client.go
package broker import ( "oms/broker/exchange" ) type client struct { broker exchange.exchange } func (c *client) setbroker(broker exchange.exchange) { c.broker = broker } func (c *client) placeorder(id string, quantity, price int) { // i am getting error here c.broker.placeorder(id, quantity, price) }
broker.go
package broker // create a client and set its broker to paytm import ( "oms/broker/paytm" ) func execute() { client := &client{} client.setbroker(paytm.paytm{ /* fields */ }) client.placeorder("order1", 10, 100) }
exchange.go
package exchange type exchange interface { placeorder(id string, quantity, price int) }
paytm.go
package paytm import "oms/broker/exchange" type Paytm struct { // fields } func (p Paytm) placeOrder(id string, quantity, price int) { // implementation for Paytm's placeOrder method }
Vous essayez d'appeler une méthode non exportée à partir du package broker
.
Si vous voulez commencer par paytm
包外部调用该方法,您应该在您的界面以及您的方法中将其重命名为 PlaceOrder
.
Pour plus d'informations sur les champs et méthodes exportés/non exportés, voir ici : https://golangbyexample.com/exported-unexported-fields-struct-go/
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!