Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara mengubah suai nilai dalam golang

Cara mengubah suai nilai dalam golang

PHPz
PHPzasal
2023-04-13 18:31:44994semak imbas

Golang ialah bahasa pengaturcaraan yang sangat popular Sintaksnya yang ringkas, ciri prestasi tinggi dan konkurensi menjadikannya digunakan secara meluas dalam aplikasi web, pengaturcaraan rangkaian dan bidang lain. Dalam Go, mengubah suai nilai pembolehubah mungkin tidak mudah difahami Artikel ini akan memperkenalkan secara terperinci cara mengubah suai nilai dalam Go.

1. Melepasi nilai dan lulus melalui rujukan

Di Golang, parameter fungsi boleh dihantar mengikut nilai atau rujukan. Melepasi nilai bermakna menghantar salinan nilai parameter ke fungsi Pengubahsuaian kepada nilai parameter dalam fungsi tidak akan menjejaskan nilai di luar fungsi. Lulus melalui rujukan merujuk kepada menghantar parameter sebagai penunjuk kepada fungsi, dan pengubahsuaian kepada penunjuk dalam fungsi akan ditunjukkan di luar fungsi.

Kod sampel adalah seperti berikut:

package main

import "fmt"

func main() {
    var x int = 10
    fmt.Println("before call:", x)
    modifyValue(x)
    fmt.Println("after call:", x)
    modifyPointer(&x)
    fmt.Println("after call:", x)
}

func modifyValue(x int) {
    x = x + 1
    fmt.Println("in func:", x)
}

func modifyPointer(x *int) {
    *x = *x + 1
    fmt.Println("in func:", *x)
}

Kod ini mentakrifkan dua fungsi modifyValue dan modifyPointer, satu untuk mengubah suai nilai dan satu untuk mengubah suai penunjuk. Dalam fungsi main, kami mentakrifkan pembolehubah integer x dan memulakannya kepada 10, dan kemudian memanggil modifyValue dan modifyPointer masing-masing.

Apabila kita melaksanakan program ini, hasil output adalah seperti berikut:

before call: 10
in func: 11
after call: 10
in func: 11
after call: 11

Memerhatikan output, kita boleh mendapati bahawa apabila modifyValue dipanggil, walaupun nilai parameter adalah diubah suai dalam fungsi, nilai di luar fungsi Nilai tidak berubah apabila modifyPointer dipanggil, nilai yang ditunjuk oleh penunjuk dinaikkan satu dalam fungsi dan nilai di luar fungsi juga menjadi 11 dengan sewajarnya. Ini ialah perbezaan antara lulus dengan nilai dan lulus dengan rujukan.

2. Cara mengubah suai nilai di Golang

Memahami perbezaan antara lulus nilai dan lulus rujukan, kita boleh mula memperkenalkan cara mengubah suai nilai di Golang.

2.1 Tatasusunan dan Hirisan

Di Golang, elemen dalam tatasusunan dan kepingan boleh diakses melalui indeks, dan nilai elemen boleh diubah suai melalui indeks.

Kod sampel adalah seperti berikut:

package main

import "fmt"

func main() {
    var arr [3]int = [3]int{1, 2, 3}
    fmt.Println("before modify:", arr)
    arr[1] = 4
    fmt.Println("after modify:", arr)
    
    var slc []int = []int {1, 2, 3}
    fmt.Println("before modify:", slc)
    slc[1] = 4
    fmt.Println("after modify:", slc)
}

Kod ini mentakrifkan tatasusunan integer panjang 3 arr dan hirisan integer slc, dan kemudian melaksanakan tatasusunan dan jujukan kepingan Ubah suai elemen kedua dalam .

Apabila kami melaksanakan program ini, output adalah seperti berikut:

before modify: [1 2 3]
after modify: [1 4 3]
before modify: [1 2 3]
after modify: [1 4 3]

2.2 Map

Di Golang, Map ialah struktur pasangan nilai kunci yang boleh diakses dengan nama kunci Akses dan ubah suai nilai dalam Peta.

Kod sampel adalah seperti berikut:

package main

import "fmt"

func main() {
    var m map[string]int = map[string]int{"apple": 1, "banana": 2, "orange": 3}
    fmt.Println("before modify:", m)
    m["banana"] = 4
    fmt.Println("after modify:", m)
}

Kod ini mentakrifkan Peta daripada rentetan kepada integer, dan kemudian mengubah suai nilai dalam Peta melalui nama kunci.

Apabila kita melaksanakan program ini, output adalah seperti berikut:

before modify: map[apple:1 banana:2 orange:3]
after modify: map[apple:1 banana:4 orange:3]

2.3 Struct

Di Golang, struktur ialah jenis komposit yang ditentukan pengguna yang boleh Menentukan ahli struktur dan akses serta ubah suai nilai mereka menggunakan sintaks titik.

Kod sampel adalah seperti berikut:

package main

import "fmt"

type Person struct {
    Name string
    Age int
}

func main() {
    var p Person = Person{"Tom", 20}
    fmt.Println("before modify:", p)
    p.Age = 21
    fmt.Println("after modify:", p)
}

Kod ini mentakrifkan jenis struktur bernama Person, yang mengandungi ahli jenis rentetan Name dan ahli Jenis integer Age , kemudian mentakrifkan pembolehubah struktur bernama p dan memberikan nilai awal, dan akhirnya mengubah suai nilai ahli struktur.

Apabila kita melaksanakan program ini, hasil output adalah seperti berikut:

before modify: {Tom 20}
after modify: {Tom 21}

3. Ringkasan

Pembolehubah dalam Golang boleh dibahagikan kepada jenis asas dan jenis komposit. Jenis asas tidak boleh diubah suai secara langsung, manakala nilai jenis komposit boleh diubah suai melalui indeks, nama kunci dan sintaks titik. Di Golang, hantaran parameter boleh dilakukan dalam dua cara: hantaran nilai dan hantaran rujukan Anda perlu memutuskan kaedah yang hendak digunakan berdasarkan keperluan sebenar. Dalam kes pemindahan nilai, nilai di luar fungsi tidak boleh diubah suai secara langsung, dan ia perlu dicapai dengan menghantar penunjuk.

Atas ialah kandungan terperinci Cara mengubah suai nilai dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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