<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 接口執行機制 :接口對象由接口表 (interface table) 指針和數據指針組成。 接口表存儲元數據信息,包括接口類型、動態類型,以及實現接口的方法指針。無論是反射還是通過接口調用方法,都會用到這些信息。 數據指針持有的是目標對象的只讀復制品,復制完整對象或指針。 ~~~ package main import "fmt" type User struct { id int name string } func main() { u := User{1, "Tom"} var i interface{} = u u.id = 2 u.name = "Jack" fmt.Printf("%v\n", u) fmt.Printf("%v\n", i.(User)) } ~~~ 輸出結果: ~~~ {2 Jack} {1 Tom} ~~~ 接口轉型返回臨時對象,只有使用指針才能修改其狀態。 ~~~ package main import "fmt" type User struct { id int name string } func main() { u := User{1, "Tom"} var vi, pi interface{} = u, &u // vi.(User).name = "Jack" // Error: cannot assign to vi.(User).name pi.(*User).name = "Jack" fmt.Printf("%v\n", vi.(User)) fmt.Printf("%v\n", pi.(*User)) } ~~~ 輸出結果: ~~~ {1 Tom} &{1 Jack} ~~~ 只有 tab 和 data 都為 nil 時,接口才等于 nil。 ~~~ package main import ( "fmt" "reflect" "unsafe" ) var a interface{} = nil // tab = nil, data = nil var b interface{} = (*int)(nil) // tab 包含 *int 類型信息, data = nil type iface struct { itab, data uintptr } func main() { ia := *(*iface)(unsafe.Pointer(&a)) ib := *(*iface)(unsafe.Pointer(&b)) fmt.Println(a == nil, ia) fmt.Println(b == nil, ib, reflect.ValueOf(b).IsNil()) } ~~~ 輸出結果: ~~~ true {0 0} false {17424320 0} true ~~~
                  <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>

                              哎呀哎呀视频在线观看