tg-me.com/golang_for_two/41
Last Update:
Note # 17 Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ? ΠΠ»ΠΈ ΠΈΠ³ΡΠ° Ρ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ.
ΠΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ?! :)Program:
package main
import (
"fmt"
)
var g *int
func f(p *****int) { g = ****p }
func main() {
var i int
j := &i
k := &j
l := &k
m := &l
f(&m)
fmt.Printf("%T\n", &m)
fmt.Printf("%T", f)
}
ΠΡΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π° play.golang.org, Ρ ΡΠ΅ΡΠΈΠ» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ ΠΊΠ°ΠΊ ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π² Go. ΠΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
func main() {
var i = 42
var j = &i
fmt.Println("i = ", i)
fmt.Println("j = ", j)
fmt.Println("*j = ", *j)
}
ΠΡΠΌΠ°Ρ ΡΡΡ Π²ΡΠ΅ ΠΈ ΡΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ:
// Output
i = 100
j = 0xc0000160b8
*j = 100
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠΊΠ°, Ρ Π½Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΠ»ΠΈΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½ΠΈ Π½Π° ΡΠ°Π³.
Π ΡΡΡ Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ», ΡΠΎ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΡΡΠ»ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, ΠΈ Π±ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΡΡΠ»ΠΊΡ, Ρ.Π΅. ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ
**p
(dereferencing a pointer to pointer).func main() {
var i = 42
var p = &i
var pp = &p
fmt.Println("pp = ", pp)
// Dereferencing a pointer to pointer
fmt.Println("*pp = ", *pp)
fmt.Println("**pp = ", **pp)
}
pp = 0xc0000bc010
*pp = 0xc0000c2000
**pp = 42
P.S. Ρ Π΄ΡΠΌΠ°Ρ ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ.
Goto Program
BY πΊπ¦ Go for two :)
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/golang_for_two/41