برنامه نویسی

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

اگر با 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{}) می تواند مفید باشد اما به احتیاط نیاز دارد.
  • برخلاف سایر لانگ ها ، استفاده می شود اجرای ضمنی

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا