<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] 在結構體那一章節中,我們介紹了在定義結構體方法時既可以使用值接收者也可以使用指針接收者。那么對于實現接口來說使用值接收者和使用指針接收者有什么區別呢?接下來我們通過一個例子看一下其中的區別。 ## 值接收者實現接口 ```go // Penson 是人類的結構體 type Penson struct { name string } // Move 是人類跑的方法 func (p Penson) Move() { fmt.Printf("%s在跑~\n", p.name) } // Animal 是動物的結構體 type Animal struct { Species string } // Move 是動物跑的方法 func (a Animal) Move() { fmt.Printf("%s在跑~\n", a.Species) } // Mover 是跑的接口 type Mover interface { Move() } func main() { dog := Animal{"狗"} var d Mover = dog d.Move() } // 運行結果 // 狗在跑~ ``` >[info] 值接收者實現接口是指 **結構體的方法的接收者是值類型** 。結構體方法修改值得話,并不影響原來得結構體的數據。 ## 指針接收者實現接口 ```go // WeChat 是微信結構體 type WeChat struct { ID int User string Balance float64 } // Pay 是微信結構體的付款方法 func (w *WeChat) Pay(f float64) { w.Balance -= f fmt.Printf("%s用戶微信扣款%.2f元,余額%f元\n", w.User, f, w.Balance) } // Alipay 是支付寶結構體 type Alipay struct { ID int User string Balance float64 } // Pay 是支付寶結構體的付款方法 func (a *Alipay) Pay(f float64) { a.Balance -= f fmt.Printf("%s用戶支付寶扣款%.2f元,余額%.2f元\n", a.User, f, a.Balance) } // Payer 結賬接口 type SettleAccounter interface { Pay(float64) } func main() { dog := Animal{"狗"} var d Mover = dog d.Move() a := Alipay{1, "jiaxzeng", 100} var pay SettleAccounter = &a pay.Pay(15.659) fmt.Printf("%s用戶余額剩余%.2f元\n", a.User, a.Balance) } // 運行結果 // jiaxzeng用戶支付寶扣款15.66元,余額84.34元 // jiaxzeng用戶余額剩余84.34元 ``` >[info] 指針接收者實現接口是指 **結構體的方法的接收者是指針類型** 。結構體方法修改值得話,是影響原來得結構體的數據。
                  <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>

                              哎呀哎呀视频在线观看