Maison > développement back-end > Golang > le corps du texte

Modèle d'adaptateur en golang

王林
Libérer: 2024-02-10 08:40:10
avant
878 Les gens l'ont consulté

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)
}
Copier après la connexion

consumer.go

package consumer

import (
    "context"
    "fmt"
    "oms/broker"
)

func consumer(ctx context.context) {
    broker.execute()
}
Copier après la connexion

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)
}
Copier après la connexion

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)
}
Copier après la connexion

exchange.go

package exchange

type exchange interface {
    placeorder(id string, quantity, price int)
}
Copier après la connexion

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
}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!