侧边栏壁纸
博主头像
ToDream博主等级

行动起来,活在当下

  • 累计撰写 13 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Go 链式调用封装设计

X
X
2023-11-16 / 0 评论 / 0 点赞 / 34 阅读 / 2033 字

定义

type User struct {
  Username string `json:"username"`
  Age int `json:"age"`
}

func (t *User) SetUsername(username string) *User {
  t.Username = username
  return t
}

func (t *User) SetAge(age int) *User {
  t.Age = age
  return t
}

func (t *User) GetUsername() string {
  return t.Username
}

func (t *User) GetAge() int {
  return t.Age
}

// 定义一个用于构建 User 的函数
func CreateUser() *User {
  // return &User{} 方式 1
  return new(User) // 方式 2
}

使用方式

user := CreateUser().SetUsername("Tom").SetAge(18)

fmt.Println(user.GetUsername())
fmt.Println(user.GetAge())

总结

使用此方式可以降低使用者的学习坡度 并且可以提高程序的 可用性

PS: 可以与 interface 配合使用 使 程序可扩展性更高

0

评论区