分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
直接上代码。 不解释了。菜鸟中。 大牛可多多指正
```go
package main
import "fmt"
func main() {
a := &LinkmgrImplBuilder{}
b,err := a.
SetSender("1").
SetOm(2).
SetDrInfo(1,2,3).
Build()
if err != nil {
return
}
b.Test()
}
type drinfo struct {
dr1 int32
dr2 int32
dr3 int32
}
type LinkMgr interface {
Test()
}
type linkmgrImpl struct {
drinfo
om int32
sender string
dbp string
}
func (l *linkmgrImpl) Test() {
fmt.Println("建造成功")
fmt.Println(l.dr3)
fmt.Println(l.om)
}
type LinkmgrImplBuilder struct {
lIl linkmgrImpl
}
func (l *LinkmgrImplBuilder) Build() (LinkMgr,error) {
return newLinkMgr(l)
}
func (l *LinkmgrImplBuilder) SetOm(dr1 int32) *LinkmgrImplBuilder {
l.lIl.om = dr1
return l
}
func (l *LinkmgrImplBuilder) SetSender(dr1 string) *LinkmgrImplBuilder {
l.lIl.sender = dr1
return l
}
func (l *LinkmgrImplBuilder) SetDrInfo(dr1, dr2, dr3 int32) *LinkmgrImplBuilder {
l.lIl.dr1 = dr1
l.lIl.dr2 = dr2
l.lIl.dr3 = dr3
return l
}
func newLinkMgr(lBuilder *LinkmgrImplBuilder) (LinkMgr,error) {
if lBuilder.lIl.om == 0 {
return nil,NewErr("cuowu")
}
l := &linkmgrImpl{
drinfo: lBuilder.lIl.drinfo,
om: lBuilder.lIl.om,
sender: lBuilder.lIl.sender,
dbp: lBuilder.lIl.dbp,
}
return l,nil
}
type myerr struct {
info string
}
func (e *myerr)Error()string{
return e.info
}
func NewErr(errinfo string)*myerr{
return &myerr{
info:errinfo,
}
}
```
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2329 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传