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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 問題 字符串轉成 byte 數組,會發生內存拷貝嗎? ## 回答 字符串轉成切片,會產生拷貝。嚴格來說,只要是發生類型強轉都會發生內存拷貝。那么問題來了。 頻繁的內存拷貝操作聽起來對性能不大友好。有沒有什么辦法可以在字符串轉成切片的時候不用發生拷貝呢? ## 解釋 ~~~go package main import ( "fmt" "reflect" "unsafe" ) func main() { a :="aaa" ssh := *(*reflect.StringHeader)(unsafe.Pointer(&a)) b := *(*[]byte)(unsafe.Pointer(&ssh)) fmt.Printf("%v",b) } ~~~ **`StringHeader`是字符串在 go 的底層結構。** ~~~go type StringHeader struct { Data uintptr Len int } ~~~ **`SliceHeader`是切片在 go 的底層結構。** ~~~go type SliceHeader struct { Data uintptr Len int Cap int } ~~~ 那么如果想要在底層轉換二者,只需要把 StringHeader 的地址強轉成 SliceHeader 就行。那么 go 有個很強的包叫 unsafe 。 1. `unsafe.Pointer(&a)`方法可以得到變量 a 的地址。 2. `(*reflect.StringHeader)(unsafe.Pointer(&a))`可以把字符串 a 轉成底層結構的形式。 3. `(*[]byte)(unsafe.Pointer(&ssh))`可以把 SSH 底層結構體轉成 byte 的切片的指針。 4. 再通過`*`轉為指針指向的實際內容。
                  <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>

                              哎呀哎呀视频在线观看