在 Go 中如何转储一个方法的 GOSSAFUNC 图 | Linux 中国

2020-06-26 00:00:00 函数 专区 方法 输出 调试
这篇文章介绍了如何为函数和方法打印 SSA 输出。
  • 来源:linux.cn/article-12350-
  • 作者:Dave Cheney
  • 译者:geekpi

(本文字数:1684,阅读时长大约:2 分钟)

Go 编译器的 SSA 后端包含一种工具,可以生成编译阶段的 HTML 调试输出。这篇文章介绍了如何为函数方法打印 SSA 输出。

让我们从一个包含函数、值方法和指针方法的示例程序开始:

package main

import (
    "fmt"
)

type Numbers struct {
    vals []int
}

func (n *Numbers) Add(v int) {
    n.vals = append(n.vals, v)
}

func (n Numbers) Average() float64 {
    sum := 0.0
    for _, num := range n.vals {
        sum += float64(num)
    }
    return sum / float64(len(n.vals))
}


func main() {
    var numbers Numbers
    numbers.Add(200)
    numbers.Add(43)
    numbers.Add(-6)
    fmt.Println(numbers.Average())
}

相关文章