использование получателя
package main
import "fmt"
type Person struct {
name string
age int
}
func (p *Person) greeting1() {
fmt.Println(p) //&{0}
fmt.Println(&p) //0xc000086018
fmt.Println("Hello~")
}
func (p Person) greeting2() {
fmt.Println(p) //{0}
fmt.Println(&p) //&{0}
fmt.Println("Hello~")
}
type Student struct {
//p Persion -> has a
Person // -> is a
school string
grade int
}
func test1(p Student) {
fmt.Println(p)
}
func test2(p *Student){
fmt.Println(p)
}
func main() {
var s Student
//s.p.greeting()
s.greeting1()
s.greeting2()
test1(s)
//test2(s) -> error
}
Когда я использую функцию в golang, если я объявляю переменную значения, когда я использую созданную мной функцию, мне приходилось помещать только переменную значения в параметре.например,
a int= 10;
func func1(param int){
fmt.Println(fmt)
}
, несмотря на то, что я объявил Person как структуру значений в структуре Student, как вы видите, мой код, функции приемника (приветствие1, приветствие2) получают два параметра типа: Person и Person.Я не могу понять, почему функция приветствия1 работает без ошибок, несмотря на то, что я поместил значение переменной в качестве параметра.Спасибо за помощь, ребята.