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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 一、定義 ![](https://img.kancloud.cn/8f/6a/8f6ab308759b925d81de7677046121e9_604x320.png) ## 二、實例 #### 為類型添加方法 * 基礎類型作為接受者 ~~~ package main import "fmt" type myint int func Add(a,b myint) myint { return a+b } func (a myint)Add2(b myint) myint { return a+b } func main() { var aa myint = 10 var bb myint = 10 // 面向過程調用 fmt.Println("Add(a+b)",Add(aa,bb)) //面向對象調用 fmt.Println("Add(a+b)",aa.Add2(bb)) } ~~~ * 結構體作為接收者 ~~~ package main import "fmt" // 結構體 type User struct { Id int Name string Age int } //給User添加方法 func (u User) userInfos(){ fmt.Println(u.Id,u.Name,u.Age) } func main() { user := User{Id: 1,Name: "aaa",Age: 20} user.userInfos() } ~~~ ## 三、值語義和引用語義 ~~~ package main import "fmt" // 結構體 type User struct { Id int Name string Age int } // 引用語義 func (u *User) func001(){ (*u).Id = 1 u.Name = "aaa" //這里的 u 會被轉化成 (*u) u.Age = 18 //這里的 u 會被轉化成 (*u) } // 值語義 func (u User) func002(){ u.Id = 2 u.Name = "bbb" u.Age = 20 } func main() { // 指針作為接收者的效果 u1 := User{1,"a1",180} fmt.Println("函數調用前",u1) (&u1).func001() fmt.Println("函數調用后",u1) // 值作為接收者 u2 := User{2,"b1",250} fmt.Println("函數調用前",u2) u2.func002() fmt.Println("函數調用后",u2) } ~~~ 結果為: 函數調用前 {1 a1 180} 函數調用后 {1 aaa 18} 函數調用前 {2 b1 250} 函數調用后 {2 b1 250} ## 四、方法的繼承 ~~~ package main import "fmt" // 結構體 type User struct { Id int Name string Age int } // 為User 定義方法 func (u *User) func001(){ fmt.Printf("%d,%s,%d\n",u.Id,u.Name,u.Age) } //繼承上面的方法 type Addrs struct { User addr string sex string } func main() { u1 := User{1,"aaa",20} u1.func001() u2 := Addrs{User{2,"bbb",18},"sh","nan"} u2.func001() } ~~~ ## 五、方法重寫 ~~~ package main import "fmt" // 結構體 type User struct { Id int Name string Age int } // 為User 定義方法 func (u *User) func001(){ fmt.Printf("我是被重寫的方法:%d,%s,%d\n",u.Id,u.Name,u.Age) } //繼承上面的方法 type Addrs struct { User addr string sex string } //方法重寫 func (a *Addrs) func001(){ fmt.Printf("我是重寫:%d,%s,%d\n",a.Id,a.Name,a.Age) } func main() { u1 := User{1,"aaa",20} u1.func001() u2 := Addrs{User{2,"bbb",18},"sh","nan"} u2.func001() // 顯式調用 u2.User.func001() } ~~~ 運行結果: ~~~ package main import "fmt" // 結構體 type User struct { Id int Name string Age int } // 為User 定義方法 func (u *User) func001(){ fmt.Printf("我是被重寫的方法:%d,%s,%d\n",u.Id,u.Name,u.Age) } //繼承上面的方法 type Addrs struct { User addr string sex string } //方法重寫 func (a *Addrs) func001(){ fmt.Printf("我是重寫:%d,%s,%d\n",a.Id,a.Name,a.Age) } func main() { u1 := User{1,"aaa",20} u1.func001() u2 := Addrs{User{2,"bbb",18},"sh","nan"} u2.func001() // 顯式調用 u2.User.func001() } ~~~ ## 六、方法值和方法表達式 ~~~ package main import "fmt" // 結構體 type User struct { Id int Name string Age int } // 為User 定義方法 func (u *User) func001(){ // %p是地址 %v是值 fmt.Printf("%p,%v\n",u,u) } func main() { u1 := User{1,"aaa",20} u1.func001() // go語義方法值特性 fun1 := u1.func001 fun1() // Go方法表達式特性 u2 := (*User).func001 u2(&u1) } ~~~ ## 七、創建get和set方法并進行調用 ~~~ package main import "fmt" // 結構體 type User struct { Id int Name string Age int } func (u *User) setname() { u.Name = "aa" } func (u User) getname() string { return u.Name } func (u User) bite() { fmt.Printf("%s",u.Name) } func fun001(){ //創建對象 d := User{1,"二哈",2} d.bite() } func main() { fun001() } ~~~ 結果為: 二哈
                  <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>

                              哎呀哎呀视频在线观看