第27节 go tool

❤️💕💕Go语言高级篇章,在此之前建议您先了解基础和进阶篇。Myblog:http://nsddd.topopen in new window

Go语言基础篇open in new window

Go语言100篇进阶open in new window


[TOC]

Go Tool

调出CLI:

root@cubmaster01:/workspces/tiktok# go tool 
addr2line
asm
buildid
cgo
compile
cover
dist
doc
fix
link
nm
objdump
pack
pprof
test2json
trace
vet

这些是 Go 语言的命令行工具。它们用于编译、测试和调试 Go 程序。

  • addr2line 可以将二进制文件中的地址转换为源代码中的行号和函数名。
  • asm 可以将 Go 源代码编译为汇编语言。
  • buildid 用于在编译后的二进制文件中添加或检索 build ID。
  • cgo 用于在 Go 代码中使用 C 代码。
  • compile 用于编译 Go 源代码。
  • cover 用于收集和分析 Go 代码覆盖率数据。
  • dist 用于构建和发布 Go 包。
  • doc 用于查看 Go 包或程序的文档。
  • fix 用于自动修复 Go 代码中的语法错误。
  • link 用于链接 Go 代码。
  • nm 用于显示符号表。
  • objdump 用于显示二进制文件中的低级信息。
  • pack 用于打包 Go 源代码。
  • pprof 用于收集和分析性能数据。open in new window
  • test2json 用于将测试输出转换为 JSON 格式。
  • trace 用于收集和分析 Go 代码的运行时跟踪信息。
  • vet 用于检查 Go 代码中的可能错误。

实例

go tool compile

go tool compile 用于编译 Go 源代码。下面是一个简单的例子,它编译了一个名为 "hello.go" 的文件,并生成了一个可执行文件 "hello"。

$ go tool compile -o hello hello.go

go tool compilego build 都用于编译 Go 源代码,但它们有一些重要的区别。

go build 是 Go 语言的标准命令,它用于编译 Go 源代码并生成可执行文件或库。它的使用非常简单,只需要指定一个或多个 Go 源文件即可。

$ go build main.go 

go tool compile 是 Go 语言的低级命令,它用于编译 Go 源代码并生成机器码。它提供了更多的编译选项和更细粒度的控制。

$ go tool compile -o main main.go

一般情况下,我们建议使用 go build,因为它更简单、更易用。如果需要更细粒度的控制或更多的编译选项,可以使用 go tool compile

go tool cover

go tool cover 用于收集和分析 Go 代码覆盖率数据。下面是一个简单的例子,它运行了 "hello_test.go" 中的测试,并生成了一个覆盖率报告 "coverage.out"。

$ go test -coverprofile=coverage.out
$ go tool cover -func=coverage.out

go tool pprof

go tool pprof 用于收集和分析性能数据。下面是一个简单的例子,它运行了程序 "hello",并生成了一个性能分析文件 "cpu.pprof"。

$ go tool pprof -http=:8080 -seconds=60 -sample_index=2 -sample_interval=1s -sample_value=1s -file=cpu.pprof  hello

这些工具提供了很多功能,在使用时,可以查看完整的帮助信息。

$ go tool <toolname> -h

cgo🔍

root@cubmaster01:/workspces/tiktok# go tool cgo -h
usage: cgo -- [compiler options] file.go ...
  -V    print version and exit
  -debug-define
        print relevant #defines
  -debug-gcc
        print gcc invocations
  -dynimport string
        if non-empty, print dynamic import data for that file
  -dynlinker
        record dynamic linker information in -dynimport mode
  -dynout string
        write -dynimport output to this file
  -dynpackage string
        set Go package for -dynimport output (default "main")
  -exportheader string
        where to write export header if any exported functions
  -gccgo
        generate files for use with gccgo
  -gccgopkgpath string
        -fgo-pkgpath option used with gccgo
  -gccgoprefix string
        -fgo-prefix option used with gccgo
  -godefs
        for bootstrap: write Go definitions for C file to standard output
  -import_runtime_cgo
        import runtime/cgo in generated code (default true)
  -import_syscall
        import syscall in generated code (default true)
  -importpath string
        import path of package being built (for comments in generated files)
  -objdir string
        object directory
  -srcdir string
        source directory
  -trimpath string
        applies supplied rewrites or trims prefixes to recorded source file paths

END 链接