Я недавно начал изучать Голанг для рабочего проекта.Я родом из «с», и у меня возникло некоторое недоумение по поводу технических характеристик приемников указателей в функциях.Должен ли я считать, что получатель обобщен, и ему все равно, является ли объект указателем или литералом, он переведет его в любой тип получателя.
Я знаю, что формулировка моего вопроса может сбивать с толку, поэтому здесьВот пример кода:
func (v *clients) makePtr() {
(*v).slice = make([]client, 0)
return
}
func (v clients) makeLit() []client {
return make([]client, 0)
}
func main() {
clsPtr := &clients{} // pointer
clsLit := clients{} // literal
clsLit.makePtr() // literal with pointer reciever
clsLit.makeLit() // literal with pointer reciever
clsPtr.makePtr() // pointer with literal reciever
clsPtr.makeLit() // pointer with pointer reciever
}
Я ожидал, что функции с получателями указателей будут работать только с указателями и наоборот.Исходя из этого, я просто предполагаю, что получатели - это общее утверждение, и ему все равно, является ли он указателем, буквальным?
РЕДАКТИРОВАТЬ: Извиняюсь, ребята, возможно, я не смог прояснить вопросполучатель указателя используется для изменения объекта, но я более запутан в отношении синтаксиса, почему получатель указателя работает как для литерала, так и для указателя, так как он получает указатель, не должен ли он работать только с указателем?