खोज…
वाक्य - विन्यास
- func (t T) exampleOne (i int) (n int) {वापसी i} // यह फ़ंक्शन संरचना की प्रति प्राप्त करेगा
- func (t * T) उदाहरणTwo (i int) (n int) {वापसी i} // यह विधि संरचना को सूचक प्राप्त करेगी और इसे संशोधित करने में सक्षम होगी
बुनियादी तरीके
गो में तरीके केवल कार्यों की तरह हैं, सिवाय उनके रिसीवर के ।
आमतौर पर रिसीवर कुछ प्रकार की संरचना या प्रकार है।
package main
import (
"fmt"
)
type Employee struct {
Name string
Age int
Rank int
}
func (empl *Employee) Promote() {
empl.Rank++
}
func main() {
Bob := new(Employee)
Bob.Rank = 1
fmt.Println("Bobs rank now is: ", Bob.Rank)
fmt.Println("Lets promote Bob!")
Bob.Promote()
fmt.Println("Now Bobs rank is: ", Bob.Rank)
}
आउटपुट:
Bobs rank now is: 1
Lets promote Bob!
Now Bobs rank is: 2
जंजीर बनाने के तरीके
गोलंग में विधियों के साथ आप विधि को "चाइनिंग" कर सकते हैं जो कि पॉइंटर को विधि से और पॉइंटर को इस तरह से उसी संरचना में लौटा सकता है:
package main
import (
"fmt"
)
type Employee struct {
Name string
Age int
Rank int
}
func (empl *Employee) Promote() *Employee {
fmt.Printf("Promoting %s\n", empl.Name)
empl.Rank++
return empl
}
func (empl *Employee) SetName(name string) *Employee {
fmt.Printf("Set name of new Employee to %s\n", name)
empl.Name = name
return empl
}
func main() {
worker := new(Employee)
worker.Rank = 1
worker.SetName("Bob").Promote()
fmt.Printf("Here we have %s with rank %d\n", worker.Name, worker.Rank)
}
आउटपुट:
Set name of new Employee to Bob
Promoting Bob
Here we have Bob with rank 2
वेतनवृद्धि में कमी के रूप में वेतन-वृद्धि ऑपरेटर
हालाँकि गो, ++ और ऑपरेटर्स को सपोर्ट करता है और व्यवहार को c / c ++ के समान पाया जाता है, ऐसे ऑपरेटर्स वाले वेरिएबल्स को फ़ंक्शन के तर्क के रूप में पारित नहीं किया जा सकता है।
package main
import (
"fmt"
)
func abcd(a int, b int) {
fmt.Println(a," ",b)
}
func main() {
a:=5
abcd(a++,++a)
}
आउटपुट: सिंटैक्स त्रुटि: अप्रत्याशित ++, अल्पविराम की अपेक्षा या)
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow