2
私はゴーランを学び始めました。structの&演算子がデジタルアドレスを返さないのはなぜですか?
&
オペレータは、単純型と構造体の動作が異なることがわかりました。
単純型の場合、
&
はアドレスを返します。structの場合は、他のものを返します。
コード:
package main
import "fmt"
type person struct {
name string
age int
}
func main() {
s1 := "abc"
fmt.Println("s1 address =", &s1)
s2 := person{"Sam", 55}
fmt.Println("s2 address = ", &s2)
}
出力:
[ `hello` | done: 79.0079ms ]
s1 address = 0xc04203c1e0
s2 address = &{Sam 55} <======== What's this? And why not some address like above?
繰り返しますが、このデザインはhave-to
またはhappen-to
のですか?
すなわちそれは、文字列へのポインタと構造体へのポインタに対して異なる動作をするfmt.Println()です。 – md2perpe
つまり、fmt.PrintlnはString()メソッドを呼び出そうとし、各タイプはデフォルトの文字列表現を持ちます –