gostring的內部實現
go string 內部實現
這個string的探索
來來個例子
func boo(a int, b int)(int, string){
return a + b, "abcd"
}
81079 000000000044dfa0 <main.boo>:
81080 44dfa0:>------48 c7 44 24 18 00 00 >--movq $0x0,0x18(%rsp)
81081 44dfa7:>------00 00-
81082 44dfa9:>------0f 57 c0 >--xorps %xmm0,%xmm0
81083 44dfac:>------0f 11 44 24 20 >--movups %xmm0,0x20(%rsp)
81084 44dfb1:>------48 8b 44 24 08 >--mov 0x8(%rsp),%rax
81085 44dfb6:>------48 03 44 24 10 >--add 0x10(%rsp),%rax
81086 44dfbb:>------48 89 44 24 18 >--mov %rax,0x18(%rsp)
81087 44dfc0:>------48 8d 05 d4 eb 01 00 >--lea 0x1ebd4(%rip),%rax # 46cb9b <go.string.*+0xbb>
81088 44dfc7:>------48 89 44 24 20 >--mov %rax,0x20(%rsp)
81089 44dfcc:>------48 c7 44 24 28 04 00 >--movq $0x4,0x28(%rsp)
81090 44dfd3:>------00 00-
81091 44dfd5:>------c3 >--retq---
其中
81087 44dfc0:>------48 8d 05 d4 eb 01 00 >--lea 0x1ebd4(%rip),%rax # 46cb9b <go.string.*+0xbb>
81088 44dfc7:>------48 89 44 24 20 >--mov %rax,0x20(%rsp)
81089 44dfcc:>------48 c7 44 24 28 04 00 >--movq $0x4,0x28(%rsp)
81090 44dfd3:>------00 00-
81091 44dfd5:>------c3 >--retq---
lea 0x1ebd4(%rip),%rax
得到char*, mov %rax,0x20(%rsp)
複製給返回值, movq $0x4,0x28(%rsp)
把長度也填進去,
其實可以看到string就是c裡面的char* 和len的組合
相關文章
- fmt包String(),Error(),Format(),GoString()的介面實現ErrorORMGo
- golang的fmt包String(),Error(),Format(),GoString()的介面實現GolangErrorORM
- mysqldump的內部實現原理MySql
- 精讀《JS 陣列的內部實現》JS陣列
- kafka的內部實現、安裝和使用Kafka
- Object.create(..)和new(..)的內部實現Object
- 浮點數演算法的內部實現演算法
- Java 阻塞佇列(BlockingQueue)的內部實現原理Java佇列BloC
- 【譯】Go 切片:用法和內部實現Go
- 匿名內部類方式實現執行緒的建立執行緒
- 與你探索classnames模組內部實現
- 快速理解Go陣列和切片的內部實現原理Go陣列
- 用匿名內部類實現 Java 同步回撥Java
- Vue實現內部元件輪播切換效果Vue元件
- 5分鐘瞭解Redis的內部實現快速列表(quicklist)RedisUI
- 成品直播原始碼,實現在平臺內部的搜尋原始碼
- 關於call, apply, bind方法的區別與內部實現APP
- iOS中atomic和nonatomic區別及內部實現iOS
- 從原始碼的角度來談一談HashMap的內部實現原理原始碼HashMap
- 面試官:Redis中列表的內部實現方式是什麼?面試Redis
- 面試官:Redis中字串的內部實現方式是什麼?面試Redis字串
- 5分鐘瞭解Redis的內部實現跳躍表(skiplist)Redis
- 用 Java 實現常見的 8 種內部排序演算法Java排序演算法
- 關於爬蟲平臺的架構實現和框架的選型(二)--scrapy的內部實現以及實時爬蟲的實現爬蟲架構框架
- 靜態內部類實現的單例模式是執行緒安全的單例模式執行緒
- 面試官:Redis中有序集合的內部實現方式是什麼?面試Redis
- Redis處理客戶端連線的內部實現機制RXRedis客戶端
- Flutter部件內部狀態管理小結(實現Vue的v-model)FlutterVue
- 一個小小的 Shell 管道符,內部實現可真不簡單!
- Spring Cloud OAuth 微服務內部Token傳遞的原始碼實現解析SpringCloudOAuth微服務原始碼
- 模擬實現和深入理解Node Stream內部機制
- 8 大內部排序演算法相關及其java實現排序演算法Java
- WPF原始碼分析系列一:剖析WPF模板機制的內部實現(五)原始碼
- WPF原始碼分析系列一:剖析WPF模板機制的內部實現(一)原始碼
- Qt內部的d指標和q指標手把手教你實現QT指標
- java內部類,區域性內部類,靜態內部類,匿名內部類Java
- Java中的匿名內部類及內部類的二三事Java
- 每天一個 PHP 語法-變數使用及內部實現PHP變數