How to copy an interface value in Go?
My User
interface:
type User interface {
Name() string
SetName(name string)
}
My Admin
struct:
type Admin struct {
name string
}
func (a *Admin) Name() string {
return a.name
}
func (a *Admin) SetName(name string) {
a.name = name
}
I try to copy user1
's value.
Main Function:
func main() {
var user1 User
user1 = &Admin{name:"user1"}
fmt.Printf("User1's name: %s
", user1.Name())
var user2 User
user2 = user1
user2.SetName("user2")
fmt.Printf("User2's name: %s
", user2.Name()) // The name will be changed as "user2"
fmt.Printf("User1's name: %s
", user1.Name()) // The name will be changed as "user2" too, How to make the user1 name does not change?
}
How to achieve that changing the copy's name the original doesn't change?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…