Go 使用接口设置混凝土结构的值
我试图在一个具体的结构中设置一个属性的值,使用一个使用该结构并由该结构实现的接口的方法。该结构也由另一个结构组成 对于下面的示例,userId值保持aaaa,并且不会更新为userid1 如何通过作为参数的方法接口和作为参数的结构更新结构的值Go 使用接口设置混凝土结构的值,go,Go,我试图在一个具体的结构中设置一个属性的值,使用一个使用该结构并由该结构实现的接口的方法。该结构也由另一个结构组成 对于下面的示例,userId值保持aaaa,并且不会更新为userid1 如何通过作为参数的方法接口和作为参数的结构更新结构的值 func main() { user:=User{} mw:=SomeMiddleware{} user.UserId="aaaa" mw.Process(user) fmt.Println("UserId:
func main() {
user:=User{}
mw:=SomeMiddleware{}
user.UserId="aaaa"
mw.Process(user)
fmt.Println("UserId: " + user.UserId)
}
type IUser interface {
SetUserId(string)
}
type SomeMiddleware struct {
}
func(m SomeMiddleware) Process(user IUser){
user.SetUserId("userid1")
}
type User struct {
UserInfo
}
type UserInfo struct {
UserId string
}
func(ui UserInfo) SetUserId(userId string) {
ui.UserId=userId
}
你可以使用这样的指针
package main
import (
"fmt"
)
func main() {
user := User{}
mw := SomeMiddleware{}
user.UserId = "aaaa"
mw.Process(&user) // Send reference to user here (&user)
fmt.Println("UserId: " + user.UserId)
}
type IUser interface {
SetUserId(string)
}
type SomeMiddleware struct {
}
func (m *SomeMiddleware) Process(user IUser) { // Pointer receiver (m *SomeMiddleware)
user.SetUserId("userid1")
}
type User struct {
UserInfo
}
type UserInfo struct {
UserId string
}
func (ui *UserInfo) SetUserId(userId string) { // Pointer receiver (ui *UserInfo)
ui.UserId = userId
}