Rumah pembangunan bahagian belakang Golang pengubahsuaian parameter golang

pengubahsuaian parameter golang

May 10, 2023 pm 06:39 PM

Golang ialah bahasa pengaturcaraan sumber terbuka yang pada asalnya dibangunkan oleh Google. Ciri utamanya termasuk: keselarasan yang cekap, sintaks ringkas dan prestasi cemerlang. Antaranya, fungsi adalah bahagian yang sangat asas dalam pengaturcaraan Golang, dan parameter fungsi juga merupakan konsep teras dalam Golang. Dalam fungsi, kita boleh mengubah suai nilai parameter Tingkah laku ini dipanggil pengubahsuaian parameter. Dalam artikel ini, kami akan memperkenalkan pengubahsuaian parameter di Golang secara terperinci.

1. Kaedah hantaran parameter dalam Golang

Dalam bahasa pengaturcaraan lain, kaedah hantaran parameter biasa termasuk: hantaran nilai dan hantaran rujukan. Dalam pemindahan nilai, pengubahsuaian fungsi bagi parameter tidak akan menjejaskan pembolehubah apabila fungsi dipanggil. Dalam pemindahan rujukan, pengubahsuaian fungsi parameter akan mempengaruhi pembolehubah apabila fungsi dipanggil.

Di Golang, kaedah lulus parameter adalah serupa dengan hantaran rujukan, tetapi hantaran parameter dalam Golang tidak menggunakan penunjuk sepenuhnya. Kaedah lulus parameter di Golang dipanggil nilai lulus, iaitu, nilai pembolehubah itu sendiri diluluskan, tetapi apabila diubah suai di dalam fungsi, nilai pada alamat pembolehubah dikendalikan.

2. Pengubahsuaian parameter di Golang

Di Golang, parameter dalam fungsi boleh dibahagikan kepada dua jenis: jenis nilai pas dan jenis rujukan pas. Apabila parameter jenis nilai dilaksanakan, salinan nilai parameter akan disalin dan kemudian dikendalikan di dalam fungsi, tetapi ini tidak akan menjejaskan nilai pembolehubah asal yang diluluskan apabila fungsi dipanggil. Apabila menghantar parameter jenis rujukan, apabila fungsi dilaksanakan, alamat parameter akan dihantar ke dalam fungsi, dan nilai pembolehubah asal akan dimanipulasi secara langsung melalui alamat, jadi pengubahsuaian dalam fungsi akan menjejaskan nilai pembolehubah asal.

Kaedah lulus parameter di Golang membolehkan kami mengubah suai parameter dengan mudah. Sebagai contoh, kami mentakrifkan pembolehubah rentetan, menghantarnya ke dalam fungsi sebagai parameter, mengubah suai nilai pembolehubah rentetan dalam fungsi, dan kemudian mengeluarkan nilai yang diubah suai dalam fungsi utama. Kodnya adalah seperti berikut:

package main

import "fmt"

func changeStr(str string) {
    str = "hello"
}

func changeStrPtr(str *string) {
    *str = "hello"
}

func main() {
    str := "world"
    changeStr(str)
    fmt.Println(str) // 输出 world

    changeStrPtr(&str)
    fmt.Println(str) // 输出 hello
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan dua fungsi changeStr dan changeStrPtr, yang digunakan untuk mengubah suai pembolehubah rentetan str masing-masing. Dalam fungsi changeStr, kami hanya menetapkan pembolehubah rentetan yang diluluskan kepada "hello", tetapi pengubahsuaian ini tidak akan menjejaskan pembolehubah str dalam fungsi utama. Dalam fungsi changeStrPtr, kami mengubah suai nilai yang ditunjukkan oleh penunjuk parameter yang diluluskan kepada "hello".

3. Pengubahsuaian parameter jenis nilai dalam Golang

Untuk parameter jenis nilai, pengubahsuaian dalam fungsi tidak akan menjejaskan pembolehubah apabila fungsi dipanggil. Ini kerana fungsi akan membuat salinan parameter jenis nilai dan kemudian mengubah suainya di dalam fungsi. Oleh itu, apabila kami mengubah suai parameter jenis nilai dalam fungsi, kami hanya mengubah suai salinan parameter dan tidak mempunyai kesan ke atas pembolehubah asal.

package main

import "fmt"

func changeInt(i int) {
    i = 10
    fmt.Println("i in function:", i)
}

func main() {
    i := 5
    changeInt(i)
    fmt.Println("i in main:", i)
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan fungsi changeInt, yang menerima parameter i jenis int dan menetapkan nilai i kepada 10. Dalam fungsi utama, kami mentakrifkan pembolehubah i jenis int dan menetapkan nilainya kepada 5. Kemudian, kami memanggil fungsi changeInt, menghantar i sebagai parameter. Apabila fungsi menyelesaikan pelaksanaan, kami mengeluarkan nilai i dalam fungsi utama. Oleh kerana kami mengubah suai salinan parameter i dalam fungsi changeInt, nilai i selepas fungsi itu dilaksanakan masih 5.

4. Pengubahsuaian kepada parameter jenis rujukan dalam Golang

Untuk parameter jenis rujukan, pengubahsuaian dalam fungsi boleh menjejaskan pembolehubah secara langsung apabila fungsi dipanggil. Di Golang, jenis penunjuk adalah jenis rujukan. Dalam fungsi, jika parameter yang kita lalui adalah jenis penunjuk, maka mengubah suai nilai yang ditunjuk oleh penunjuk di dalam fungsi akan secara langsung mempengaruhi pembolehubah apabila fungsi dipanggil.

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func changePerson(p *Person) {
    p.Name = "Tom"
    p.Age = 18
    fmt.Println("Person in function:", p)
}

func main() {
    person := Person{Name: "Jack", Age: 20}
    changePerson(&person)
    fmt.Println("Person in main:", person)
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan struktur bernama Orang, yang mengandungi dua medan: Nama dan Umur. Kami juga mentakrifkan fungsi changePerson, yang menerima penunjuk kepada jenis struktur Orang. Di dalam fungsi, kami mengubah suai nilai yang ditunjukkan oleh penunjuk dan mengeluarkan struktur Orang yang diubah suai. Dalam fungsi utama, kami mentakrifkan orang pembolehubah Orang dan memulakannya kepada {Name: "Jack", Umur: 20}. Seterusnya, kami menghantar penunjuk orang sebagai parameter kepada fungsi changePerson. Apabila fungsi itu dilaksanakan, kami mengeluarkan nilai orang dalam fungsi utama dan kami dapati orang itu telah diubah suai kepada {Name: "Tom", Umur: 18}.

5. Nota

Anda perlu memberi perhatian kepada perkara berikut apabila menggunakan pengubahsuaian parameter:

  1. Anda perlu tahu cara menghantar parameter, parameter jenis nilai dan parameter jenis rujukan Kaedah pengubahsuaian adalah berbeza, jadi berhati-hati untuk tidak mengelirukan mereka.
  2. Jika parameter yang diterima oleh fungsi adalah pembolehubah yang sudah mempunyai nilai dalam fungsi utama, maka alamatnya perlu dihantar sebagai parameter semasa memanggil fungsi, jika tidak fungsi tidak boleh mengubah suai pembolehubah.
  3. Apabila mengubah suai parameter di dalam fungsi, sebaiknya tambahkan pengesahan keselamatan untuk mengelakkan kesan yang tidak perlu pada pembolehubah asal.

6

Artikel ini memperkenalkan pengubahsuaian parameter di Golang, termasuk kaedah lulus parameter dan kaedah pengubahsuaian parameter jenis nilai dan parameter jenis rujukan. Dalam fungsi, kita boleh mengubah suai nilai pembolehubah asal dengan mengubah suai parameter, tetapi kita perlu memberi perhatian kepada kaedah lulus parameter dan penggunaan kaedah pengubahsuaian yang munasabah. Mengubah suai parameter bukan sahaja boleh meningkatkan kecekapan program, tetapi juga membolehkan kami mengawal pelaksanaan program dengan lebih fleksibel semasa pengaturcaraan.

Atas ialah kandungan terperinci pengubahsuaian parameter 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

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
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)

Apakah kelemahan debian openssl Apakah kelemahan debian openssl Apr 02, 2025 am 07:30 AM

OpenSSL, sebagai perpustakaan sumber terbuka yang digunakan secara meluas dalam komunikasi yang selamat, menyediakan algoritma penyulitan, kunci dan fungsi pengurusan sijil. Walau bagaimanapun, terdapat beberapa kelemahan keselamatan yang diketahui dalam versi sejarahnya, yang sebahagiannya sangat berbahaya. Artikel ini akan memberi tumpuan kepada kelemahan umum dan langkah -langkah tindak balas untuk OpenSSL dalam sistem Debian. Debianopenssl yang dikenal pasti: OpenSSL telah mengalami beberapa kelemahan yang serius, seperti: Kerentanan Pendarahan Jantung (CVE-2014-0160): Kelemahan ini mempengaruhi OpenSSL 1.0.1 hingga 1.0.1f dan 1.0.2 hingga 1.0.2 versi beta. Penyerang boleh menggunakan kelemahan ini untuk maklumat sensitif baca yang tidak dibenarkan di pelayan, termasuk kunci penyulitan, dll.

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.

Apakah masalah dengan thread giliran di crawler colly go? Apakah masalah dengan thread giliran di crawler colly go? Apr 02, 2025 pm 02:09 PM

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

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.

Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Apr 02, 2025 pm 02:06 PM

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Apr 02, 2025 am 09:12 AM

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

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.

Bagaimana cara menentukan pangkalan data yang berkaitan dengan model dalam beego orm? Bagaimana cara menentukan pangkalan data yang berkaitan dengan model dalam beego orm? Apr 02, 2025 pm 03:54 PM

Di bawah rangka kerja beegoorm, bagaimana untuk menentukan pangkalan data yang berkaitan dengan model? Banyak projek beego memerlukan pelbagai pangkalan data untuk dikendalikan secara serentak. Semasa menggunakan beego ...

See all articles