kaedah fungsi golang

May 16, 2023 pm 12:08 PM

Golang ialah salah satu bahasa pengaturcaraan yang paling popular pada masa ini. Salah satu cirinya ialah reka bentuk fungsi dan kaedah yang sangat baik. Artikel ini akan memperkenalkan pengetahuan berkaitan fungsi dan kaedah Golang secara terperinci.

1. Fungsi

Sintaks asas fungsi Golang:

func function_name( [parameter list] ) [return_types] {
   //函数体
}
Salin selepas log masuk

Senarai parameter fungsi dan jenis nilai pulangannya adalah pilihan dan tidak perlu ditulis. Jika fungsi hanya mempunyai satu nilai pulangan dan jenisnya ialah jenis bukan antara muka, kurungan boleh diabaikan.

Contohnya:

func add(x int, y int) int {
   return x + y
}

func main() {
   fmt.Println(add(1, 2))
}
Salin selepas log masuk

Fungsi tambah menerima dua parameter jenis int, dan jenis nilai pulangan juga adalah int Fungsi dipanggil melalui ungkapan tambah(1, 2) dannya nilai pulangan adalah output. Keluaran ialah 3.

Fungsi Golang menyokong berbilang nilai pulangan. Contohnya:

func swap(x, y string) (string, string) {
   return y, x
}

func main() {
   a, b := swap("hello", "world")
   fmt.Println(a, b)
}
Salin selepas log masuk

Fungsi swap menerima dua parameter jenis rentetan, dan jenis nilai pulangan ialah dua jenis rentetan, iaitu nilai pulangan ialah dua rentetan, melalui berbilang tugasan a, b := swap(" hello" , "world") menetapkan nilai pulangan fungsi masing-masing kepada a dan b, dan akhirnya mengeluarkan hello world.

2. Kaedah

Dalam bahasa Golang, kaedah merujuk kepada fungsi pada jenis penerima tertentu, iaitu kelas. Jenis ini boleh menjadi struct atau mana-mana jenis tersuai.

Format definisi kaedah adalah seperti berikut:

func (variable_name type) function_name([parameter list]) [return_types] {
    //函数体  
}
Salin selepas log masuk

di mana variable_name ialah contoh jenis dan function_name ialah kaedah jenis.

Contohnya:

type Rectangle struct {
   length, width int
}

func (r Rectangle) area() int {
   return r.length * r.width
}

func main() {
   r := Rectangle{length: 10, width: 5}
   fmt.Println("area: ", r.area())
}
Salin selepas log masuk

Kod di atas mentakrifkan jenis Rectangle, yang mempunyai dua medan: panjang dan lebar, dan juga mentakrifkan kawasan kaedah(), jadi ia adalah kelas. Dalam pengisytiharan kaedah, penerima adalah jenis Rectangle, kaedah dinamakan area(), dan nilai pulangan adalah jenis int.

Pernyataan berikut menguji kelas ini dengan mencipta contoh Rectangle bernama r dan memanggil kaedah kawasan()nya. Output pelaksanaan

ialah:

area: 50
Salin selepas log masuk

Kaedah ini juga boleh mempunyai penerima penunjuk, yang merupakan penunjuk kepada jenis. Contohnya:

type Circle struct {
   radius float64
}

func (c *Circle) area() float64 {
   return math.Pi * c.radius * c.radius
}

func main() {
   c := Circle{radius: 5}
   fmt.Println("area:", c.area())
}
Salin selepas log masuk

Kod di atas mentakrifkan jenis Bulatan, yang mempunyai jejari medan Ia juga mentakrifkan kawasan kaedah() dan menunjuk kepada jenis melalui penerima penunjuk. Oleh itu, kaedah kawasan() akan menukar nilai pada contoh Bulatan.

Akhir sekali, kita perlu ambil perhatian bahawa semua jenis dalam Golang boleh mempunyai kaedah melainkan ia ditandakan secara eksplisit sebagai jenis salinan (penerima). Walau bagaimanapun, dalam beberapa kes, terutamanya dalam industri berprestasi tinggi, adalah lebih cekap prestasi untuk menggunakan penerima penunjuk. Walau bagaimanapun, anda perlu ingat peraturan ini kerana jika anda secara tidak sengaja menulis kaedah yang salah, ia akan menyebabkan ralat dalam program anda.

3. Ringkasan

Dalam bahasa Golang, fungsi dan kaedah (kelas) ialah unit pengaturcaraan asas. Dengan mempelajari struktur tatabahasa fungsi, kita boleh mentakrifkan dan memanggil fungsi dengan mudah, menjadikan struktur program lebih jelas dan ringkas. Pada masa yang sama, kaedah dibina ke dalam kelas dan merupakan sebahagian daripada kelas, jadi ia merangkum pembolehubah contoh dan kaedah dalam kelas. Dengan cara ini, kita boleh menguruskan pelbagai maklumat dan kaedah program dengan lebih mudah, dan mengelakkan pembaziran sumber.

Atas ialah kandungan terperinci kaedah fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana anda menulis ujian unit di GO? Bagaimana anda menulis ujian unit di GO? Mar 21, 2025 pm 06:34 PM

Artikel ini membincangkan ujian unit menulis di GO, meliputi amalan terbaik, teknik mengejek, dan alat untuk pengurusan ujian yang cekap.

Bagaimana saya menulis objek dan stub untuk ujian di GO? Bagaimana saya menulis objek dan stub untuk ujian di GO? Mar 10, 2025 pm 05:38 PM

Artikel ini menunjukkan penciptaan dan stub di GO untuk ujian unit. Ia menekankan penggunaan antara muka, menyediakan contoh pelaksanaan mengejek, dan membincangkan amalan terbaik seperti menjaga mocks fokus dan menggunakan perpustakaan penegasan. Articl

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Mar 10, 2025 pm 03:20 PM

Artikel ini meneroka kekangan jenis adat Go untuk generik. Ia memperincikan bagaimana antara muka menentukan keperluan jenis minimum untuk fungsi generik, meningkatkan keselamatan jenis dan kebolehgunaan semula kod. Artikel ini juga membincangkan batasan dan amalan terbaik

Bagaimana anda menggunakan alat PPROF untuk menganalisis prestasi GO? Bagaimana anda menggunakan alat PPROF untuk menganalisis prestasi GO? Mar 21, 2025 pm 06:37 PM

Artikel ini menerangkan cara menggunakan alat PPROF untuk menganalisis prestasi GO, termasuk membolehkan profil, mengumpul data, dan mengenal pasti kesesakan biasa seperti CPU dan isu memori.

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Mar 10, 2025 pm 05:36 PM

Artikel ini meneroka menggunakan alat pengesanan untuk menganalisis aliran pelaksanaan aplikasi GO. Ia membincangkan teknik instrumentasi manual dan automatik, membandingkan alat seperti Jaeger, Zipkin, dan OpenTelemetry, dan menonjolkan visualisasi data yang berkesan

Terangkan tujuan Pakej Refleksi Go. Bilakah anda akan menggunakan refleksi? Apakah implikasi prestasi? Terangkan tujuan Pakej Refleksi Go. Bilakah anda akan menggunakan refleksi? Apakah implikasi prestasi? Mar 25, 2025 am 11:17 AM

Artikel ini membincangkan pakej GO's Reflect, yang digunakan untuk manipulasi kod runtime, bermanfaat untuk siri, pengaturcaraan generik, dan banyak lagi. Ia memberi amaran tentang kos prestasi seperti pelaksanaan yang lebih perlahan dan penggunaan memori yang lebih tinggi, menasihati penggunaan yang bijak dan terbaik

Bagaimana anda menentukan kebergantungan dalam fail go.mod anda? Bagaimana anda menentukan kebergantungan dalam fail go.mod anda? Mar 27, 2025 pm 07:14 PM

Artikel ini membincangkan menguruskan kebergantungan modul Go melalui Go.Mod, meliputi spesifikasi, kemas kini, dan resolusi konflik. Ia menekankan amalan terbaik seperti versi semantik dan kemas kini biasa.

Bagaimanakah saya boleh menggunakan alat linter dan analisis statik untuk meningkatkan kualiti dan pemeliharaan kod pergi saya? Bagaimanakah saya boleh menggunakan alat linter dan analisis statik untuk meningkatkan kualiti dan pemeliharaan kod pergi saya? Mar 10, 2025 pm 05:38 PM

Artikel ini menganjurkan untuk menggunakan alat linter dan analisis statik untuk meningkatkan kualiti kod pergi. IT Butiran Pemilihan Alat (mis., Golangci-Lint, Go Vet), Integrasi Aliran Kerja (IDE, CI/CD), dan tafsiran yang berkesan tentang amaran/kesilapan untuk meningkatkan COD

See all articles