क्यों नहीं कर सकते मैं एक इंटरफेस के साथ एक संग्रह की विधियों मुख्य रूप से पैकेज

0

सवाल

मैं हूँ वास्तव में नया करने के लिए golang और मैं कोशिश कर रहा हूँ देखने के लिए कैसे encapsulation वास्तव में काम करता है में जाना.

मैं निम्नलिखित संरचना है

-- package a
    -a_core.go
    -a.go
    -models.go

-- main.go

में मॉडल.जाने मैं structs के लिए अनुरोध और प्रतिक्रियाओं के लिए एक एपीआई कॉल,

एक.जाना है एक खाली संरचना है, जो निजी और सार्वजनिक इंटरफेस है, जो मैं करना चाहते हैं को बेनकाब करने के लिए विभिन्न तरीकों के साथ

a_core.जाना बस कुछ व्यापार तर्क हो जाएगा जो कहा जाता है में इंटरफ़ेस का कार्यान्वयन

तो, मैं एक मुख्य.जाना है , जहां मैं सिर्फ कॉल सार्वजनिक इंटरफेस है.

कोड में से एक.जाने

package a

type myFunction struct{}

type MyFunc interface {
 Create(myData *MyData) (*MyData, error)
 Fetch(test string)
 Delete(test string)
}

//Concrete implementations that can be accessed publicly
func (a *myFunction) Create(data *MyData) (*MyData, error) {
  return nil, nil   
}

func (a *myFunction) Fetch(test string) {

}

func (a *myFunction) Delete(test string) {

}

में मुख्य.जाओ, मैं कॉल इंटरफ़ेस मेरी पहली पैदा MyData सूचक के साथ मूल्यों

data := &a.MyData{
 /////
}

result, err := a.MyFunc.Create(data)

मैं निम्नलिखित त्रुटि मिलती है जब मैं यह कर,

बहुत कुछ तर्कों में कॉल करने के लिए एक.MyFunc.बनाएँ

का उपयोग नहीं कर सकते डेटा (चर के प्रकार *एक.MyData) के रूप में एक.MyFunc मूल्य में तर्क करने के लिए एक.MyFunc.बनाएँ: लापता विधि CreatecompilerInvalidIfaceAssign

कृपया क्या मैं गलत कर रहा हूँ?

go interface struct visual-studio-code
2021-11-20 22:23:03
1

सबसे अच्छा जवाब

1

यहाँ एक उदाहरण है
ध्यान दें कि नाम में अपरकेस सार्वजनिक कर रहे हैं, लोअरकेस में निजी (देखें https://tour.golang.org/basics/3 )

./जाने-उदाहरण/main.जाने

package main

import "go-example/animal"

func main() {
    var a animal.Animal
    a = animal.Lion{Age: 10}
    a.Breathe()
    a.Walk()
}

./जाने-उदाहरण/पशु/जानवर है । जाने

package animal

import "fmt"

type Animal interface {
    Breathe()
    Walk()
}

type Lion struct {
    Age int
}

func (l Lion) Breathe() {
    fmt.Println("Lion breathes")
}

func (l Lion) Walk() {
    fmt.Println("Lion walk")
}
2021-11-20 23:23:09

मैं कोशिश कर रहा हूँ करने के लिए संदर्भ से यह एक अलग पैकेज में । इसलिए, क्यों मैं ऐसा करने के लिए एक पैकेज है । interfacename.methodname और तरीकों कर रहे हैं पहले से ही लागू किया पर खाली संरचना myFunction
gbubemi smith

अद्यतन मेरा जवाब
Michael D.

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में