Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Corak penyesuai dalam golang

Corak penyesuai dalam golang

王林
王林ke hadapan
2024-02-10 08:40:10873semak imbas

golang 中的适配器模式

Corak penyesuai dalam golang ialah corak reka bentuk yang biasa digunakan, yang boleh membantu kami menukar antara muka yang tidak serasi kepada antara muka yang serasi. Melalui penyesuai, kami boleh mencapai kesalingoperasian antara sistem yang berbeza dan kelas yang berbeza, dan meningkatkan fleksibiliti dan kebolehgunaan semula kod. Editor PHP Banana akan memperkenalkan konsep, senario aplikasi dan kaedah pelaksanaan corak penyesuai secara terperinci dalam artikel ini untuk membantu pembaca lebih memahami dan menggunakan corak reka bentuk ini. Sama ada anda seorang pemula atau pembangun yang berpengalaman, anda boleh memperoleh pengetahuan dan kemahiran praktikal daripada artikel ini dan mendalami pemahaman anda tentang corak penyesuai Golang. Mari kita terokai corak reka bentuk yang menyeronokkan dan praktikal ini bersama-sama!

Kandungan soalan

Cuba buat corak penyesuai dalam golang, tidak pasti apa salah saya. Pelanggan saya.go menunjukkan ralat

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
}

Penyelesaian

Anda cuba memanggil kaedah yang tidak dieksport daripada pakej broker. Kalau nak mula dari paytm 包外部调用该方法,您应该在您的界面以及您的方法中将其重命名为 PlaceOrder .

Untuk maklumat lanjut tentang medan dan kaedah yang dieksport/tidak dieksport, lihat di sini: https://golangbyexample.com/exported-unexported-fields-struct-go/

Atas ialah kandungan terperinci Corak penyesuai dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam