برو رابط های ساده شده: آموزش یک مبتدی

اگر با Golang شروع می کنید ، احتمالاً در مورد آن شنیده اید رابط، اما ممکن است شما کاملاً درک نکنید که چگونه آنها کار می کنند.
رابط ها یکی از قدرتمندترین مفهوم در لنگ هستند و به شما امکان می دهد کد انعطاف پذیر و قابل استفاده مجدد را بنویسید.
رابط ها چیست؟
در GO ، رابط مجموعه ای از روش هایی است که یک نوع می تواند آن را اجرا کند. برخلاف دیگر ، ما نیازی به صریح نداریم که یک نوع رابط را پیاده سازی می کند اگر روشهای لازم را داشته باشد به سادگی این کار را انجام می دهد
نمونه رابط نمونه
package main
import "fmt"
// Interface definition
type Animal interface {
Speak() string
}
// Structs implementing the interface
type Dog struct{}
func (d Dog) Speak() string {
return "Woof!"
}
type Cat struct{}
func (c Cat) Speak() string {
return "Meow!"
}
func main() {
var a Animal
a = Dog{}
fmt.Println("Dog says:", a.Speak())
a = Cat{}
fmt.Println("Cat says:", a.Speak())
}
اینجا چه اتفاقی می افتد؟
ما تعریف می کنیم
Animal
رابط باSpeak()
روش
Dog
وتCat
به طور خودکار این رابط کاربری را اجرا کنید زیرا آنهاSpeak()
روشدر
main()
، ما ساختارهای متفاوتی را بهAnimal
متغیر ، نشان دهنده چند شکل در GO
رابط های خالی: interface{}
در GO ، رابط خالی نوع خاصی است که می تواند هر مقدار را نگه دارد:
func printValue(v interface{}) {
fmt.Println("Received value:", v)
}
func main() {
printValue(42)
printValue("Hello, Go!")
printValue(3.14)
}
– این مفید است اما باید با احتیاط برای جلوگیری از از دست دادن نوع و نیاز به ادعاهای نوع استفاده شود.
رابط هایی با روش های mutiple
ما می توانیم رابط های پیچیده تری را تعریف کنیم که به روش های مختلفی نیاز دارند. مثال:
package main
import "fmt"
// Interface with two methods
type Vehicle interface {
Start() string
Stop() string
}
// Implementation for a Car
type Car struct{}
func (c Car) Start() string {
return "Car started!"
}
func (c Car) Stop() string {
return "Car stopped!"
}
func main() {
var v Vehicle = Car{}
fmt.Println(v.Start())
fmt.Println(v.Stop())
}
در اینجا
Car
لوازم جانبیVehicle
چون داردStart()
وتStop()
روشها
💡 نتیجه گیری
- رابط های موجود در GO قدرتمند هستند و کد انعطاف پذیر را فعال می کنند.
- رابط خالی (
interface{}
) می تواند مفید باشد اما به احتیاط نیاز دارد. - برخلاف سایر لانگ ها ، استفاده می شود اجرای ضمنی