The adapter pattern in golang is a commonly used design pattern that can help us convert incompatible interfaces into compatible interfaces. Through adapters, we can achieve interoperability between different systems and different classes, and improve the flexibility and reusability of code. PHP editor Banana will introduce the concept, application scenarios and implementation methods of the adapter pattern in detail in this article to help readers better understand and apply this design pattern. Whether you are a beginner or an experienced developer, you can gain practical knowledge and skills from this article and deepen your understanding of the Golang adapter pattern. Let’s explore this fun and practical design pattern together!
Trying to create an adapter pattern in golang, not sure what I did wrong. My client.go shows error
c.broker.placeorder undefined (type exchange.exchange has no field or method 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 }
You are trying to call an unexported method from the broker
package.
If you want to call this method from outside the paytm
package, you should rename it to PlaceOrder
in your interface as well as in your method.
More information about exported/unexported fields and methods can be found here: https://golangbyexample.com/exported-unexported-fields-struct-go/
The above is the detailed content of Adapter pattern in golang. For more information, please follow other related articles on the PHP Chinese website!