Я новичок на go
, но у меня есть вопрос:
У меня есть следующий код:
package lab
import (
"fmt"
"math"
)
type Circle struct {
x float64
y float64
r float64
}
func (c *Circle) area() float64 {
return math.Pi * c.r * c.r
}
func StructCode() {
c := Circle{1,2,5}
fmt.Println("struct addr",c)
fmt.Println("Circle",c.area())
}
Мой вопрос: Circle area function
занимает Circle Pointer
и возвращает площадь.Основываясь на этом. почему, когда я печатаю структуру, она не показывает адрес памяти, а показывает &{1 2 5}
вместо .Требуется указатель для функции области, но c circle
не печатает как указатель (в котором я представляю, что он напечатал бы адрес памяти, являющийся circle pointer
)
ОБНОВЛЕНИЕ
Разве возможно &{1 2 5}
на самом деле является ссылкой?
ВТОРОЕ ОБНОВЛЕНИЕ
Я смог получить это, выполнив это:
c := Circle{1,2,5}
p := &c
fmt.Printf("%p",p)
// returns 0xc042052340
Однако мой вопрос сейчас таков: почему я могу передать c.area()
вместо p.area()
, поскольку функция площади круга требует указателя: