<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 指針對象 **什么時候使用指針對象呢?當receiver較大的時候,或者需要修改receiver中的字段值的時候**,拷貝值是很耗費性能的.所以此時應該使用指針對象. ~~~ func (p *Point) ScaleBy(factor float64) { p.X *= factor p.Y *= factor } ~~~ 1. 不管你的method的receiver是指針類型還是非指針類型,都是可以通過指針/非指針類型進行調用的,編譯器會幫你做類型轉換。 2. 在聲明一個method的receiver該是指針還是非指針類型時,你需要考慮兩方面的內部,第一方面是這個對象本身是不是特別大,如果聲明為非指針變量時,調用會產生一次拷貝;第二方面是如果你用指針類型作為receiver,那么你一定要注意,這種指針類型指向的始終是一塊內存地址,就算你對其進行了拷貝。 ## 例子 值方法: ~~~ type User struct { Name string } func (u User) PrintName() { //注意User是值類型 fmt.Println(u.Name) } func main() { u1 := &User{"jack"} //但是并不影響我們使用"&"取地址去調用它,golang的編譯器會幫我們進行解引用加"*"去調用 u1.PrintName() User{"jack"}.PrintName() //這里也可以直接調用receiver是值類型的方法. } ~~~ 指針方法: ~~~ type User struct { Name string } func (u *User) PrintName() { //注意是指針方法 fmt.Println(u.Name) } func main() { u1 := User{"jack"} //編譯器會自動幫我們加上"&" u1.PrintName() //調用成功 User{"jack"}.PrintName() //報錯,因為只有"變量"是有地址的,golang編譯器才能幫我們去找到"變量"的地址,而直接調用是無法找到這個地址的,所以會報錯. } ~~~ ## 約定 當方法的receiver的類型必須保持一致,如果是指針就全都是指針,哪怕是用不到. ## 歧義 為了避免歧義,類型是指針的是不允許有方法的.因為這樣不知道調用的receiver到底是什么了.
                  <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>

                              哎呀哎呀视频在线观看