This question already has an answer here:
I am very confused about the following Go code. Who can tell me why
-
worker=u
andwork=&u
are valid? -
worker=p
is valid? -
worker=&p
is invalid? - What is difference between User and People?
package main
import (
"fmt"
)
type Worker interface {
Work()
}
type User struct {
name string
}
func (u User) Work() {
}
type People struct {
name string
}
func (p *People) Work() {
}
func main() {
var worker Worker
u := User{name:"xxx"}
worker = u // valid
worker = &u // valid
p := People{name:"xxx"}
worker = p // invalid
worker = &p // valid
}
</div>