<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ~~~ /* Composite 組合模式: 將對象組合成樹形結構,以表示“部分-整體”的層次結構。 組合模式使得用戶對單個對象和組合對象的使用具有一致性 個人想法: 作者: HCLAC 日期: 20170308 */ package composite import ( "fmt" "strings" ) // 公司管理接口 type Company interface { add(Company) remove(Company) display(int) lineOfDuty() } type RealCompany struct { name string } // 具體公司 type ConcreateCompany struct { RealCompany list []Company } func NewConcreateCompany(name string) *ConcreateCompany { return &ConcreateCompany{RealCompany{name}, []Company{}} } func (c *ConcreateCompany) add(newc Company) { if c == nil { return } c.list = append(c.list, newc) } func (c *ConcreateCompany) remove(delc Company) { if c == nil { return } for i, val := range c.list { if val == delc { c.list = append(c.list[:i], c.list[i+1:]...) return } } return } func (c *ConcreateCompany) display(depth int) { if c == nil { return } fmt.Println(strings.Repeat("-", depth), " ", c.name) for _, val := range c.list { val.display(depth + 2) } } func (c *ConcreateCompany) lineOfDuty() { if c == nil { return } for _, val := range c.list { val.lineOfDuty() } } // 人力資源部門 type HRDepartment struct { RealCompany } func NewHRDepartment(name string) *HRDepartment { return &HRDepartment{RealCompany{name}} } func (h *HRDepartment) add(c Company) {} func (h *HRDepartment) remove(c Company) {} func (h *HRDepartment) display(depth int) { if h == nil { return } fmt.Println(strings.Repeat("-", depth), " ", h.name) } func (h *HRDepartment) lineOfDuty() { if h == nil { return } fmt.Println(h.name, "員工招聘培訓管理") } // 財務部門 type FinanceDepartment struct { RealCompany } func NewFinanceDepartment(name string) *FinanceDepartment { return &FinanceDepartment{RealCompany{name}} } func (h *FinanceDepartment) add(c Company) {} func (h *FinanceDepartment) remove(c Company) {} func (h *FinanceDepartment) display(depth int) { if h == nil { return } fmt.Println(strings.Repeat("-", depth), " ", h.name) } func (h *FinanceDepartment) lineOfDuty() { if h == nil { return } fmt.Println(h.name, "公司財務收支管理") } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看