Rumah pembangunan bahagian belakang Golang go语言中普通函数与方法的区别是什么?

go语言中普通函数与方法的区别是什么?

Dec 08, 2020 am 11:23 AM
pergi bahasa kaedah Fungsi biasa

区别:对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然;对于方法,接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以。

go语言中普通函数与方法的区别是什么?

本文操作环境:windows10系统、Go 1.11.2、thinkpad t480电脑。

相关推荐:《Go视频教程

Go语言中普通函数与方法的区别

1、对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。

2、对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以。

以下为简单示例:

package structTest  
  
//普通函数与方法的区别(在接收者分别为值类型和指针类型的时候)  
//Date:2014-4-3 10:00:07  
  
import (  
    "fmt"  
)  
  
func StructTest06Base() {  
    structTest0601()  
    structTest0602()  
}  
  
//1.普通函数  
//接收值类型参数的函数  
func valueIntTest(a int) int {  
    return a + 10  
}  
  
//接收指针类型参数的函数  
func pointerIntTest(a *int) int {  
    return *a + 10  
}  
  
func structTest0601() {  
    a := 2  
    fmt.Println("valueIntTest:", valueIntTest(a))  
    //函数的参数为值类型,则不能直接将指针作为参数传递  
    //fmt.Println("valueIntTest:", valueIntTest(&a))  
    //compile error: cannot use &a (type *int) as type int in function argument  
  
    b := 5  
    fmt.Println("pointerIntTest:", pointerIntTest(&b))  
    //同样,当函数的参数为指针类型时,也不能直接将值类型作为参数传递  
    //fmt.Println("pointerIntTest:", pointerIntTest(b))  
    //compile error:cannot use b (type int) as type *int in function argument  
}  
  
//2.方法  
type PersonD struct {  
    id   int  
    name string  
}  
  
//接收者为值类型  
func (p PersonD) valueShowName() {  
    fmt.Println(p.name)  
}  
  
//接收者为指针类型  
func (p *PersonD) pointShowName() {  
    fmt.Println(p.name)  
}  
  
func structTest0602() {  
    //值类型调用方法  
    personValue := PersonD{101, "Will Smith"}  
    personValue.valueShowName()  
    personValue.pointShowName()  
  
    //指针类型调用方法  
    personPointer := &PersonD{102, "Paul Tony"}  
    personPointer.valueShowName()  
    personPointer.pointShowName()  
  
    //与普通函数不同,接收者为指针类型和值类型的方法,指针类型和值类型的变量均可相互调用  
}
Salin selepas log masuk

更多编程相关知识,请访问:编程课程!!

Atas ialah kandungan terperinci go语言中普通函数与方法的区别是什么?. 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

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu 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 untuk memulihkan kenalan yang dipadam pada WeChat (tutorial mudah memberitahu anda cara memulihkan kenalan yang dipadam) Bagaimana untuk memulihkan kenalan yang dipadam pada WeChat (tutorial mudah memberitahu anda cara memulihkan kenalan yang dipadam) May 01, 2024 pm 12:01 PM

Malangnya, orang sering memadamkan kenalan tertentu secara tidak sengaja atas sebab tertentu WeChat ialah perisian sosial yang digunakan secara meluas. Untuk membantu pengguna menyelesaikan masalah ini, artikel ini akan memperkenalkan cara mendapatkan semula kenalan yang dipadam dengan cara yang mudah. 1. Fahami mekanisme pemadaman kenalan WeChat Ini memberi kita kemungkinan untuk mendapatkan semula kenalan yang dipadamkan Mekanisme pemadaman kenalan dalam WeChat mengalih keluar mereka daripada buku alamat, tetapi tidak memadamkannya sepenuhnya. 2. Gunakan fungsi "Pemulihan Buku Kenalan" terbina dalam WeChat menyediakan "Pemulihan Buku Kenalan" untuk menjimatkan masa dan tenaga Pengguna boleh mendapatkan semula kenalan yang telah dipadamkan dengan cepat melalui fungsi ini. 3. Masuk ke halaman tetapan WeChat dan klik sudut kanan bawah, buka aplikasi WeChat "Saya" dan klik ikon tetapan di sudut kanan atas untuk memasuki halaman tetapan.

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang May 03, 2024 pm 12:15 PM

Anda boleh menggunakan refleksi untuk mengakses medan dan kaedah peribadi dalam bahasa Go: Untuk mengakses medan peribadi: dapatkan nilai pantulan nilai melalui reflect.ValueOf(), kemudian gunakan FieldByName() untuk mendapatkan nilai pantulan medan dan panggil Kaedah String() untuk mencetak nilai medan . Panggil kaedah persendirian: dapatkan juga nilai pantulan nilai melalui reflect.ValueOf(), kemudian gunakan MethodByName() untuk mendapatkan nilai pantulan kaedah, dan akhirnya panggil kaedah Call() untuk melaksanakan kaedah. Kes praktikal: Ubah suai nilai medan persendirian dan panggil kaedah persendirian melalui refleksi untuk mencapai kawalan objek dan liputan ujian unit.

Rahsia penetasan telur naga mudah alih terbongkar (langkah demi langkah untuk mengajar anda cara berjaya menetas telur naga mudah alih) Rahsia penetasan telur naga mudah alih terbongkar (langkah demi langkah untuk mengajar anda cara berjaya menetas telur naga mudah alih) May 04, 2024 pm 06:01 PM

Permainan mudah alih telah menjadi sebahagian daripada kehidupan orang ramai dengan perkembangan teknologi. Ia telah menarik perhatian ramai pemain dengan imej telur naga yang comel dan proses penetasan yang menarik, dan salah satu permainan yang telah menarik perhatian ramai ialah versi mudah alih Dragon Egg. Untuk membantu pemain memupuk dan mengembangkan naga mereka sendiri dengan lebih baik dalam permainan, artikel ini akan memperkenalkan kepada anda cara menetas telur naga dalam versi mudah alih. 1. Pilih jenis telur naga yang sesuai Pemain perlu berhati-hati memilih jenis telur naga yang mereka suka dan sesuai dengan diri mereka, berdasarkan pelbagai jenis sifat dan kebolehan telur naga yang disediakan dalam permainan. 2. Tingkatkan tahap mesin pengeraman Pemain perlu meningkatkan tahap mesin pengeraman dengan menyelesaikan tugasan dan mengumpul prop Tahap mesin pengeraman menentukan kelajuan penetasan dan kadar kejayaan penetasan. 3. Kumpul sumber yang diperlukan untuk penetasan Pemain perlu berada dalam permainan

Bagaimana untuk menetapkan saiz fon pada telefon mudah alih (mudah melaraskan saiz fon pada telefon bimbit) Bagaimana untuk menetapkan saiz fon pada telefon mudah alih (mudah melaraskan saiz fon pada telefon bimbit) May 07, 2024 pm 03:34 PM

Menetapkan saiz fon telah menjadi keperluan pemperibadian yang penting kerana telefon mudah alih menjadi alat penting dalam kehidupan seharian manusia. Untuk memenuhi keperluan pengguna yang berbeza, artikel ini akan memperkenalkan cara meningkatkan pengalaman penggunaan telefon mudah alih dan melaraskan saiz fon telefon mudah alih melalui operasi mudah. Mengapa anda perlu melaraskan saiz fon telefon mudah alih anda - Melaraskan saiz fon boleh menjadikan teks lebih jelas dan mudah dibaca - Sesuai untuk keperluan membaca pengguna yang berbeza umur - Mudah untuk pengguna yang kurang penglihatan menggunakan saiz fon fungsi tetapan sistem telefon mudah alih - Cara memasukkan antara muka tetapan sistem - Dalam Cari dan masukkan pilihan "Paparan" dalam antara muka tetapan - cari pilihan "Saiz Fon" dan laraskan saiz fon dengan pihak ketiga aplikasi - muat turun dan pasang aplikasi yang menyokong pelarasan saiz fon - buka aplikasi dan masukkan antara muka tetapan yang berkaitan - mengikut individu

Cara memilih pelindung skrin telefon mudah alih untuk melindungi skrin telefon mudah alih anda (beberapa perkara utama dan petua untuk membeli pelindung skrin telefon mudah alih) Cara memilih pelindung skrin telefon mudah alih untuk melindungi skrin telefon mudah alih anda (beberapa perkara utama dan petua untuk membeli pelindung skrin telefon mudah alih) May 07, 2024 pm 05:55 PM

Filem telefon bimbit telah menjadi salah satu aksesori yang sangat diperlukan dengan populariti telefon pintar. Untuk memanjangkan hayat perkhidmatannya, pilih filem telefon mudah alih yang sesuai untuk melindungi skrin telefon mudah alih. Untuk membantu pembaca memilih filem telefon bimbit yang paling sesuai untuk diri mereka sendiri, artikel ini akan memperkenalkan beberapa perkara utama dan teknik untuk membeli filem telefon bimbit. Fahami bahan dan jenis filem telefon bimbit: Filem PET, TPU, dsb. Filem telefon mudah alih diperbuat daripada pelbagai bahan, termasuk kaca terbaja. Filem PET agak lembut, filem kaca terbaja mempunyai rintangan calar yang baik, dan TPU mempunyai prestasi kalis kejutan yang baik. Ia boleh diputuskan berdasarkan keutamaan dan keperluan peribadi semasa memilih. Pertimbangkan tahap perlindungan skrin Jenis filem telefon mudah alih yang berbeza mempunyai tahap perlindungan skrin yang berbeza. Filem PET terutamanya memainkan peranan anti-calar, manakala filem kaca terbaja mempunyai rintangan jatuh yang lebih baik. Anda boleh memilih untuk menjadi lebih baik

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go May 08, 2024 pm 03:09 PM

Ujian prestasi menilai prestasi aplikasi di bawah beban yang berbeza, manakala ujian unit mengesahkan ketepatan satu unit kod. Ujian prestasi memfokuskan pada mengukur masa tindak balas dan daya pemprosesan, manakala ujian unit memfokuskan pada output fungsi dan liputan kod. Ujian prestasi mensimulasikan persekitaran dunia sebenar dengan beban tinggi dan serentak, manakala ujian unit dijalankan di bawah beban rendah dan keadaan bersiri. Matlamat ujian prestasi adalah untuk mengenal pasti kesesakan prestasi dan mengoptimumkan aplikasi, manakala matlamat ujian unit adalah untuk memastikan ketepatan dan keteguhan kod.

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? May 07, 2024 pm 12:39 PM

Perangkap dalam Bahasa Go Semasa Merekabentuk Sistem Teragih Go ialah bahasa popular yang digunakan untuk membangunkan sistem teragih. Walau bagaimanapun, terdapat beberapa perangkap yang perlu diberi perhatian apabila menggunakan Go yang boleh menjejaskan kekukuhan, prestasi dan ketepatan sistem anda. Artikel ini akan meneroka beberapa perangkap biasa dan memberikan contoh praktikal tentang cara mengelakkannya. 1. Terlalu banyak menggunakan concurrency Go ialah bahasa concurrency yang menggalakkan pembangun menggunakan goroutine untuk meningkatkan paralelisme. Walau bagaimanapun, penggunaan konkurensi yang berlebihan boleh menyebabkan ketidakstabilan sistem kerana terlalu banyak gorout bersaing untuk mendapatkan sumber dan menyebabkan overhed penukaran konteks. Kes praktikal: Penggunaan concurrency yang berlebihan membawa kepada kelewatan respons perkhidmatan dan persaingan sumber, yang ditunjukkan sebagai penggunaan CPU yang tinggi dan overhed kutipan sampah yang tinggi.

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin May 08, 2024 pm 09:42 PM

Perpustakaan dan alatan untuk pembelajaran mesin dalam bahasa Go termasuk: TensorFlow: perpustakaan pembelajaran mesin popular yang menyediakan alatan untuk membina, melatih dan menggunakan model. GoLearn: Satu siri algoritma pengelasan, regresi dan pengelompokan Gonum: Pustaka pengkomputeran saintifik yang menyediakan operasi matriks dan fungsi algebra linear.

See all articles