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的組合
相關文章
- KVO的內部實現
- mysqldump的內部實現原理MySql
- fmt包String(),Error(),Format(),GoString()的介面實現ErrorORMGo
- HashMap的內部實現機制HashMap
- golang的fmt包String(),Error(),Format(),GoString()的介面實現GolangErrorORM
- iOS 揭露Block的內部實現原理iOSBloC
- 帶你看懂Dictionary的內部實現
- 深入 Python 字典的內部實現Python
- 深入 Python 列表的內部實現Python
- SDWebImage內部實現過程Web
- 精讀《JS 陣列的內部實現》JS陣列
- kafka的內部實現、安裝和使用Kafka
- Object.create(..)和new(..)的內部實現Object
- C#中Dictionary的內部實現剖析C#
- ORACLE NUMBER型別內部實現Oracle型別
- 解讀Promise內部實現原理Promise
- STL vector的內部實現原理及基本用法
- 浮點數演算法的內部實現演算法
- 【譯】Go 切片:用法和內部實現Go
- 與你探索classnames模組內部實現
- 面試題 SDWebImage內部實現過程面試題Web
- Java 阻塞佇列(BlockingQueue)的內部實現原理Java佇列BloC
- 匿名內部類方式實現執行緒的建立執行緒
- Python for迴圈內部實現的一個samplePython
- 變數在 PHP7 內部的實現(一)變數PHP
- 變數在 PHP7 內部的實現(二)變數PHP
- css如何實現只保留內部邊框CSS
- ICE框架元件內部實現與特點框架元件
- 快速理解Go陣列和切片的內部實現原理Go陣列
- 用匿名內部類實現 Java 同步回撥Java
- Vue實現內部元件輪播切換效果Vue元件
- 成品直播原始碼,實現在平臺內部的搜尋原始碼
- 5分鐘瞭解Redis的內部實現快速列表(quicklist)RedisUI
- 面試官:Redis中字串的內部實現方式是什麼?面試Redis字串
- 面試官:Redis中列表的內部實現方式是什麼?面試Redis
- DataContractJsonSerializer和JavaScriptSerializer內部實現差異JSONJavaScript
- 從原始碼的角度來談一談HashMap的內部實現原理原始碼HashMap
- 用 Java 實現常見的 8 種內部排序演算法Java排序演算法