<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之旅 廣告
                Golang 接口轉換 :利用類型推斷,可判斷接口對象是否某個具體的接口或類型。 ~~~ package main import "fmt" type User struct { id int name string } func (self *User) String() string { return fmt.Sprintf("%d, %s", self.id, self.name) } func main() { var o interface{} = &User{1, "Tom"} if i, ok := o.(fmt.Stringer); ok { // ok-idiom fmt.Println(i) } u := o.(*User) // u := o.(User) // panic: interface is *main.User, not main.User fmt.Println(u) } ~~~ 輸出結果: ~~~ 1, Tom 1, Tom ~~~ 還可用 switch 做批量類型判斷,不支持 fallthrough。 ~~~ package main import "fmt" type User struct { id int name string } func (self *User) String() string { return fmt.Sprintf("%d, %s", self.id, self.name) } func main() { var o interface{} = &User{1, "Tom"} switch v := o.(type) { case nil: // o == nil fmt.Println("nil") case fmt.Stringer: // interface fmt.Println(v) case func() string: // func fmt.Println(v()) case *User: // *struct fmt.Printf("%d, %s\n", v.id, v.name) default: fmt.Println("unknown") } } ~~~ 輸出結果: ~~~ 1, Tom ~~~ 超集接口對象可轉換為子集接口,反之出錯。 ~~~ package main import "fmt" type Stringer interface { String() string } type Printer interface { String() string Print() } type User struct { id int name string } func (self *User) String() string { return fmt.Sprintf("%d, %v", self.id, self.name) } func (self *User) Print() { fmt.Println(self.String()) } func main() { var o Printer = &User{1, "Tom"} var s Stringer = o fmt.Println(s.String()) } ~~~ 輸出結果: ~~~ 1, Tom ~~~
                  <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>

                              哎呀哎呀视频在线观看