Bagaimana Saya Berhenti Bimbang dan Belajar Antara Muka Cinta Go

Mary-Kate Olsen
Lepaskan: 2024-10-24 08:19:29
asal
182 orang telah melayarinya

Hai, rakan baharu Go (atau patutkah saya katakan Gophers-in-training?)! ?
Antara muka kelihatan seperti salah satu perkara yang misteri dan ajaib yang semua orang terus bercakap tetapi tiada siapa yang benar-benar menjelaskan dengan cara yang masuk akal. "Ia seperti polimorfisme tetapi lebih mudah, " kata mereka. "Ia seperti kontrak," dakwa mereka. Tetapi setiap kali saya cuba melaksanakannya, kod saya akan melihat saya seperti, "Apa yang anda lakukan, manusia?" ?

Tetapi itu ketika itu. Kini, antara muka dan saya berada dalam keadaan yang lebih baik, dan saya di sini untuk membantu anda mengelakkan kekeliruan awal saya. Jadi, jika anda telah menggaru kepala anda tentang antara muka Go, dapatkan secawan kopi (atau teh) dan mari kita pecahkannya, satu langkah pada satu masa—tolak sakit kepala. ?
Jadi, Apakah Sebenarnya Antara Muka?

Mari kita mulakan dari bahagian paling atas. Dalam Go, antara muka pada asasnya ialah satu cara untuk menentukan tingkah laku, tetapi tanpa terperangkap dengan butiran cara ia berfungsi. Bayangkan anda bos sebuah kilang, dan anda tidak kisah bagaimana mesin itu berfungsi; anda hanya peduli bahawa ia boleh menghasilkan produk. Begitulah antara muka Go: anda mentakrifkan perkara yang perlu berlaku, tetapi bukan cara ia harus dilakukan.

Sebagai contoh, mari kita berpura-pura bekerja dengan haiwan (ya, Pergi bekerja dengan haiwan, tinggal bersama saya di sini). Anda tahu setiap haiwan mengeluarkan bunyi, tetapi anda tidak begitu peduli bagaimana ia berlaku. Anjing menyalak, kucing mengeong, dan itik…baiklah, mereka bergurau. Anda boleh menentukan antara muka seperti ini:

type Animal interface {
    Sound() string
}

Salin selepas log masuk
Salin selepas log masuk

How I Stopped Worrying and Learned to Love Go Interfaces
apa ini Hanya kontrak, berkata: "Hei, apa-apa jenis yang ingin dipanggil Haiwan mesti mempunyai kaedah Sound()." Itu sahaja! Tiada sihir pelik yang terlibat.

Tunjukkan Kod Saya! ???

Mari kita ambil contoh yang sangat mudah dan lihat cara ia berfungsi dalam tindakan. Kami akan mencipta beberapa haiwan dan membuat mereka bercakap.

package main

import "fmt"

// The Animal interface
type Animal interface {
    Sound() string
}

// Define a Dog
type Dog struct{}

func (d Dog) Sound() string {
    return "Woof!"
}

// Define a Cat
type Cat struct{}

func (c Cat) Sound() string {
    return "Meow!"
}

func main() {
    // Our Animal variable can hold any type that satisfies the interface
    var myPet Animal

    // myPet is now a Dog
    myPet = Dog{}
    fmt.Println(myPet.Sound())  // Outputs: Woof!

    // myPet is now a Cat
    myPet = Cat{}
    fmt.Println(myPet.Sound())  // Outputs: Meow!
}

Salin selepas log masuk
Salin selepas log masuk

Apa yang berlaku di sini?

  1. Kami mentakrifkan antara muka Haiwan yang mempunyai satu kaedah: Sound() ?.
  2. Kemudian kami mencipta dua jenis, Anjing dan Kucing, dan memberi mereka kaedah Bunyi() unik mereka.
  3. Dalam fungsi main(), kami mencipta pembolehubah myPet yang boleh memuatkan apa sahaja yang memenuhi antara muka Haiwan.
  4. Mula-mula, kami menetapkan Anjing, dan boom! Anjing kami menyalak: "Woof!" ?
  5. Kemudian kami menetapkan Kucing, dan rasa apa? Ia mengeong: "Meow!" ?

Di sinilah keajaiban antara muka Go benar-benar bermula ??:
selagi sesuatu jenis mempunyai kaedah yang diperlukan, ia memenuhi antara muka. Tidak perlu menyebut secara eksplisit "Anjing melaksanakan Haiwan"—Go cukup bijak untuk memikirkannya sendiri! ??

Mengapa Anda Perlu Mementingkan Antara Muka?

How I Stopped Worrying and Learned to Love Go Interfaces
Biar saya setaraf dengan awak. Pada mulanya, saya seperti, "Mengapa perlu bersusah payah dengan ini? Saya hanya boleh menulis kaedah saya secara langsung!” Tetapi percayalah, anda pasti mahu memahami antara muka lebih awal daripada kemudian, terutamanya apabila pangkalan kod anda mula berkembang.

Ini sebabnya:

  1. Fleksibiliti: Antara muka menjadikan kod anda lebih fleksibel. Anda boleh menukar satu jenis dengan yang lain asalkan ia memenuhi antara muka. Ia seperti mengupah seseorang berdasarkan kemahiran mereka dan bukannya tajuk pekerjaan mereka.
  2. Polymorphism: Anda boleh merawat pelbagai jenis secara seragam jika mereka melaksanakan antara muka yang sama. Inilah yang menjadikan antara muka begitu berkuasa—ia seperti mempunyai alat kawalan jauh universal yang berfungsi dengan mana-mana TV.

  3. Kod Bersih: Antara muka membolehkan anda menulis kod yang lebih bersih dan modular. Anda mentakrifkan gelagat dan biarkan jenis mengendalikan pelaksanaannya sendiri.

Pelbagai Kaedah, Tiada Masalah!

Mari kita pertingkatkannya. Katakan anda sedang membina sistem untuk berfungsi dengan bentuk, dan anda ingin mengira kedua-dua luas dan perimeter untuk pelbagai bentuk seperti bulatan dan segi empat tepat. Masukkan antara muka berbilang kaedah!

type Animal interface {
    Sound() string
}

Salin selepas log masuk
Salin selepas log masuk

Antara Muka Kosong (antara muka{})

Oh, anda fikir kami sudah selesai???? Tidak! Mari kita pergi lebih mendalam dengan antara muka kosong, antara muka{}, yang merupakan cara Go untuk berkata, "Saya boleh memegang apa-apa jenis." Ia seperti kotak percuma untuk semua di mana anda boleh membuang apa-apa sahaja—rentetan, nombor, struct—anda namakannya.

package main

import "fmt"

// The Animal interface
type Animal interface {
    Sound() string
}

// Define a Dog
type Dog struct{}

func (d Dog) Sound() string {
    return "Woof!"
}

// Define a Cat
type Cat struct{}

func (c Cat) Sound() string {
    return "Meow!"
}

func main() {
    // Our Animal variable can hold any type that satisfies the interface
    var myPet Animal

    // myPet is now a Dog
    myPet = Dog{}
    fmt.Println(myPet.Sound())  // Outputs: Woof!

    // myPet is now a Cat
    myPet = Cat{}
    fmt.Println(myPet.Sound())  // Outputs: Meow!
}

Salin selepas log masuk
Salin selepas log masuk

Antara muka kosong sering digunakan dalam situasi di mana anda tidak tahu terlebih dahulu jenis yang akan anda hadapi (fikirkan API atau perpustakaan). Ia seperti versi kad bebas Go.

Merangkul Antara Muka

Antara muka Learning Go boleh berasa seperti menavigasi labirin pada mulanya, tetapi apabila anda memahami asasnya, ia membuka dunia baharu yang penuh kod yang fleksibel, boleh digunakan semula dan bersih. Jadi jangan takut untuk menyelam!

Mulakan dengan mudah, bermain dengan contoh kecil dan biarkan keajaiban antara muka Go berkembang dalam diri anda. Tidak lama kemudian, anda akan menulis kod yang sebersih dan fleksibel seperti pengajar yoga di persidangan teknologi.

Selamat pengekodan, rakan Gophers! Semoga antara muka anda mudah, dan struct anda sentiasa dilaksanakan. ?✌️

How I Stopped Worrying and Learned to Love Go Interfaces

Atas ialah kandungan terperinci Bagaimana Saya Berhenti Bimbang dan Belajar Antara Muka Cinta Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!