2 回答
TA贡献1873条经验 获得超9个赞
错误在这一行
var s = Salutation
= 右边的东西必须评估为一个值。Salutation是一种类型,而不是值。以下是声明s的三种方式:
var s Salutation // variable declaration using a type
var s = Salutation{} // variable declaration using a value
s := Salutation{} // short variable declaration
所有三个声明的结果是相同的。第三种变体通常优于第二种,但不能用于声明包级变量。
TA贡献1851条经验 获得超5个赞
第四种方式:
var s *Salutation = &(Salutation{});
我总是通过引用传递结构,而不是值。并且始终按值传递原语。
您的方法重写为接收器方法:
func (s *Salutation) Greet()() {
fmt.Println(s.name)
fmt.Println(s.greeting)
}
完整示例:
package main
import "fmt"
func NewSalutation()(*Salutation){
return &( Salutation{} );
}
type Salutation struct {
name string
greeting string
}
func (s *Salutation) Greet()() {
fmt.Println(s.name)
fmt.Println(s.greeting)
}
func main() {
var s *Salutation; //:<--Null
s = NewSalutation() //:<--Points To Instance
s.name = "Alex"
s.greeting = "Hi"
s.Greet();
}
- 2 回答
- 0 关注
- 153 浏览
添加回答
举报