package main
import "fmt"
type trace struct{}
func main() {
slice := make([]string, 2, 4)
var t trace
t.Example(slice, "hello", 10)
}
func (t *trace) Example(slice []string, str string, i int) {
fmt.Printf("Receiver Address: %p\n", t)
panic("Want stack trace")
}
Example函數的聲明中,它有三個參數,一個字符串slice,一個字符串和一個整數。它的方法體也很簡單,只有一行,拋出一個panic,這會產生一個堆棧跟蹤信息,也就是當前Panic的堆棧信息:堆棧信息方法中的0x1157c08是Receiver Address的值。
對於[]string類型的參數。slice是引用類型,這意味着那個值是一個指針的頭信息(header value),它指向一個字符串。對於slice,它的頭是三個word數,指向一個數組。因此0xc420043f38,0x2,0x4代表這個slice。
第5個和第6個參數代表字符串的參數。0x10c0224
是指向這個字符串底層數組的指針,0x5
是"hello"字符串的長度.
參數0xa是10,代表example中的第三個參數。