Maison  >  Article  >  développement back-end  >  Modèle d'adaptateur en golang

Modèle d'adaptateur en golang

王林
王林avant
2024-02-10 08:40:10873parcourir

golang 中的适配器模式

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 !

Contenu de la question

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
}

Solution de contournement

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer