2 回答

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
錯(cuò)誤在這一行
var s = Salutation
= 右邊的東西必須評(píng)估為一個(gè)值。Salutation是一種類型,而不是值。以下是聲明s的三種方式:
var s Salutation // variable declaration using a type
var s = Salutation{} // variable declaration using a value
s := Salutation{} // short variable declaration
所有三個(gè)聲明的結(jié)果是相同的。第三種變體通常優(yōu)于第二種,但不能用于聲明包級(jí)變量。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
第四種方式:
var s *Salutation = &(Salutation{});
我總是通過引用傳遞結(jié)構(gòu),而不是值。并且始終按值傳遞原語(yǔ)。
您的方法重寫為接收器方法:
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 關(guān)注
- 179 瀏覽
添加回答
舉報(bào)