Golangのアドレス演算子を構造体で使用したときの挙動について質問があります。
アドレス演算子(&)は「値からポインタ型を生成し、アドレスを得る」ものだと認識しているのですが、以下のコードのコメントがある部分ではアドレスではなく、構造体のポインタが出力して得られるのはなぜでしょうか?
golang
1package main 2 3import "fmt" 4 5type Person struct { 6 Name string 7} 8 9func main() { 10 var p *Person 11 12 p = &Person{ 13 Name: "Jimmy", 14 } 15 16 fmt.Printf("%v\n", p) // &{Jimmy} <- アドレスではないのか? 17}
以下の場合は変数のアドレスが得られるというのは理解できています。
golang
1packge main 2 3import "fmt" 4 5func main() { 6 var s string 7 8 s = "Hello" 9 10 fmt.Printf("%v\n", &s) // 0xc00000e1e0 変数sのアドレスが得られる 11}
構造体は変数ではなく型なので、アドレスが得られるわけではなく、構造体での&ではポインタ型の値を代入するという仕様なのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。