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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 一、定義 ![](https://img.kancloud.cn/71/ea/71eac8f392b76179018b6f5d9defd9f5_628x272.png) ## 二、實例 ~~~ package main import "fmt" // 定義接口 type demo1 interface { //定義方法 Fun01() } // 結構體 type User struct { Name string Age int } type User2 struct { Name string Age int } func (u *User)Fun01() { fmt.Printf("一、%s的年齡為%d\n",u.Name,u.Age) } func (u2 *User2)Fun01() { fmt.Printf("二、%s的年齡為%d\n",u2.Name,u2.Age) } //自定義類型中使用 type mysay string func (m mysay) Fun01() { fmt.Printf("人生無常大娃套小娃的是%s\n",m) } //演示多態 //參數為接口類型 func WhoSay(h *User){ h.Fun01() } func main() { u1 := &User{"二哈",20} u2 := &User2{"大哈",22} var str mysay = "猜猜看" u1.Fun01() u2.Fun01() str.Fun01() // 多態 //WhoSay(u1) //WhoSay(u2) //WhoSay(str) } ~~~ ## 三、接口繼承 ~~~ package main import "fmt" //定義接口 type Humaner interface { //方法 Say() } type Personer interface { //相當于寫了Say() Humaner //唱歌 Sing(lyrics string) } type Student struct { name string score int } func (s *Student) Say() { fmt.Printf("Student[%s,%d] 瞌睡不斷\n", s.name, s.score) } func (s *Student) Sing(lyrics string) { fmt.Printf("Student sing[%s]!!\n", lyrics) } func main() { s := &Student{"學生", 88} //調Personner方法 var p Personer p = s p.Say() p.Sing("aaa") } ~~~ ## 四、comma-ok斷言 ~~~ package main import "fmt" //空接口 type Element interface{} type Person struct { name string age int } func main() { //3容量的切片 list := make([]Element, 3) list[0] = 1 //int list[1] = "Hello" //string list[2] = Person{"zhangsan", 18} for index, element := range list { //類型斷言:value,ok = element.(T) if value, ok := element.(int); ok { fmt.Printf("list[%d] 是int類型,值是 %d\n", index, value) } else if value, ok := element.(string); ok { fmt.Printf("list[%d] 是string類型,值是 %s\n", index, value) } else { fmt.Printf("list[%d] 是其他類型\n", index) } } } ~~~ 運行結果: list[0] 是int類型,值是 1 list[1] 是string類型,值是 Hello list[2] 是其他類型 ## 五、switch ~~~ package main import "fmt" //空接口 type Element interface{} type Person struct { name string age int } func main() { //3容量的切片 list := make([]Element, 3) list[0] = 1 //int list[1] = "Hello" //string list[2] = Person{"zhangsan", 18} for index, element := range list { switch value := element.(type) { case int: fmt.Printf("list[%d] 是int類型,值是 %d\n", index, value) case string: fmt.Printf("list[%d] 是string類型,值是 %s\n", index, value) default: fmt.Printf("list[%d] 是其他類型\n", index) } } } ~~~
                  <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>

                              哎呀哎呀视频在线观看