Senior
func updateV1(px *int) { x2 := 20 px = &x2 } func updateV2(px *int) { *px = 20 } func main() { x := 10 updateV1(&x) fmt.Println(x) updateV2(&x) fmt.Println(x) }
sobes.tech AI
Ҷавоб аз AI
Дар коде, ду функсия ҳастанд, ки нишондиҳанда ба int-ро қабул мекунанд, аммо ба таври гуногун кор мекунанд:
func updateV1(px *int) {
x2 := 20
px = &x2
}
func updateV2(px *int) {
*px = 20
}
func main() {
x := 10
updateV1(&x)
fmt.Println(x) // 10 мебарорад
updateV2(&x)
fmt.Println(x) // 20 мебарорад
}
Тавзеҳ:
- Дар
updateV1, параметрpxнусхаи маҳаллӣ аз нишондиҳанда аст. Таъин карданиpx = &x2танҳо нусхаи маҳаллӣ-ро тағир медиҳад, на тағир медиҳад тағирот дар тағирёбииxдарmain. - Дар
updateV2, дароз кардани нишондиҳанда*px = 20, яъне, арзиши дар суроғае, киpxнишон медиҳад, тағир меёбад. Ин арзишиxдарmain-ро тағир медиҳад.
Натиҷа: updateV1 тағир намедиҳад тағирёбии аслӣ, дар ҳоле ки updateV2 тағир медиҳад.
Ин фарқиятро байни тағир додани нусхаи маҳаллӣ аз нишондиҳанда ва тағир додани арзиш дар суроғаи нишон дода нишон медиҳад.