100天精通Golang(基础入门篇)——第16天:深入解析Go语言包的使用和包管理

在这里插入图片描述

博主 libin9iOak带您 Go to Golang Language.✨
个人主页——libin9iOak的博客
《面试题大全》 文章图文并茂生动形象简单易学!欢迎大家来踩踩~
《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~
希望本文能够给您带来一定的帮助文章粗浅,敬请批评指正!

100天精通Golang(基础入门篇)

    • 摘要:
    • 前言:
    • 引言:
  • Go语言中包的使用
    • 1. `main`包
    • 2. 包
    • 3. 导入
      • A. 通常导入
      • B. 点操作
      • C. 别名
      • D. `_`操作
    • 4. `GOPATH`环境变量
    • 5. `init()`包初始化
    • 6. 管理外部包
  • 7. 综合代码案例:
    • 今日学习总结:
  • 结语

摘要:

本文详细介绍了Go语言中包的使用和包管理的相关知识。包是组织和复用源码的基本单元,具有代码可见性。我们了解了main包、包的命名规则以及包的导入方式。同时,解释了包的初始化过程和使用外部包的方法。最后,我们介绍了GOPATH环境变量的作用和包的编译与安装。通过本文的学习,读者可以全面了解Go语言包的使用和管理,为后续的学习打下坚实的基础。

前言:

在Go语言中,包的使用是非常重要的概念。它可以帮助我们组织和复用代码,提高开发效率。本文将深入介绍包的相关知识,并帮助读者理解包的作用和使用方法。同时,我们还将讨论包管理的问题,包括导入其他包和管理外部包。通过本文的学习,读者将能够熟练地运用包来组织和管理自己的Go项目。

引言:

Go语言的包是一种强大的工具,用于组织和复用代码。通过包的导入和命名规则,我们可以将代码分成不同的模块,并通过导出和非导出标识符来控制其可见性。同时,通过合理管理外部包,我们可以借助其他开发者的优秀代码,提高开发效率。在本文中,我们将深入探讨包的使用和管理,为读者提供全面的Go语言包知识。

Go语言中包的使用

Go语言使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进”了许多。

下面是Go语言SDK的包结构图

 ├─api
├─bin
├─doc
├─lib
│  └─time
├─misc
│  ├─android
│  ├─arm
│  ├─cgo
│  │  ├─errors
│  │  │  └─testdata
│  │  ├─fortran
│  │  │  ├─helloworld
│  │  │  └─testdata
│  │  │      └─testprog
│  │  ├─gmp
│  │  ├─life
│  │  │  └─testdata
│  │  ├─nocgo
│  │  ├─stdio
│  │  │  └─testdata
│  │  │      └─stdio
│  │  ├─test
│  │  │  ├─gcc68255
│  │  │  ├─issue20266
│  │  │  ├─issue23555a
│  │  │  ├─issue23555b
│  │  │  ├─issue24161arg
│  │  │  ├─issue24161e0
│  │  │  ├─issue24161e1
│  │  │  ├─issue24161e2
│  │  │  ├─issue24161res
│  │  │  ├─issue26213
│  │  │  ├─issue26430
│  │  │  ├─issue26743
│  │  │  ├─issue27054
│  │  │  ├─issue27340
│  │  │  ├─issue29563
│  │  │  ├─issue30527
│  │  │  ├─issue41761a
│  │  │  ├─issue43639
│  │  │  ├─issue52611a
│  │  │  ├─issue52611b
│  │  │  ├─issue8756
│  │  │  ├─issue8828
│  │  │  ├─issue9026
│  │  │  ├─issue9400
│  │  │  ├─issue9510a
│  │  │  └─issue9510b
│  │  ├─testcarchive
│  │  │  └─testdata
│  │  │      ├─libgo
│  │  │      ├─libgo2
│  │  │      ├─libgo3
│  │  │      ├─libgo4
│  │  │      ├─libgo6
│  │  │      ├─libgo7
│  │  │      ├─libgo8
│  │  │      └─p
│  │  ├─testcshared
│  │  │  └─testdata
│  │  │      ├─go2c2go
│  │  │      │  ├─go
│  │  │      │  ├─m1
│  │  │      │  └─m2
│  │  │      ├─issue36233
│  │  │      ├─libgo
│  │  │      ├─libgo2
│  │  │      ├─libgo4
│  │  │      ├─libgo5
│  │  │      └─p
│  │  ├─testgodefs
│  │  │  └─testdata
│  │  ├─testplugin
│  │  │  ├─altpath
│  │  │  │  └─testdata
│  │  │  │      ├─common
│  │  │  │      └─plugin-mismatch
│  │  │  └─testdata
│  │  │      ├─checkdwarf
│  │  │      ├─common
│  │  │      ├─forkexec
│  │  │      ├─host
│  │  │      ├─iface
│  │  │      ├─iface_a
│  │  │      ├─iface_b
│  │  │      ├─iface_i
│  │  │      ├─issue18584
│  │  │      ├─issue18676
│  │  │      │  └─dynamodbstreamsevt
│  │  │      ├─issue19418
│  │  │      ├─issue19529
│  │  │      ├─issue19534
│  │  │      ├─issue22175
│  │  │      ├─issue22295.pkg
│  │  │      ├─issue24351
│  │  │      ├─issue25756
│  │  │      │  └─plugin
│  │  │      ├─issue44956
│  │  │      │  └─base
│  │  │      ├─issue52937
│  │  │      ├─issue53989
│  │  │      │  └─p
│  │  │      ├─method
│  │  │      ├─method2
│  │  │      │  └─p
│  │  │      ├─method3
│  │  │      │  └─p
│  │  │      ├─plugin1
│  │  │      ├─plugin2
│  │  │      ├─sub
│  │  │      │  └─plugin1
│  │  │      ├─unnamed1
│  │  │      └─unnamed2
│  │  ├─testsanitizers
│  │  │  └─testdata
│  │  │      └─asan_linkerx
│  │  │          └─p
│  │  ├─testshared
│  │  │  └─testdata
│  │  │      ├─dep2
│  │  │      ├─dep3
│  │  │      ├─depBase
│  │  │      ├─division
│  │  │      ├─exe
│  │  │      ├─exe2
│  │  │      ├─exe3
│  │  │      ├─execgo
│  │  │      ├─explicit
│  │  │      ├─gcdata
│  │  │      │  ├─main
│  │  │      │  └─p
│  │  │      ├─global
│  │  │      ├─globallib
│  │  │      ├─iface
│  │  │      ├─iface_a
│  │  │      ├─iface_b
│  │  │      ├─iface_i
│  │  │      ├─implicit
│  │  │      ├─implicitcmd
│  │  │      ├─issue25065
│  │  │      ├─issue30768
│  │  │      │  └─issue30768lib
│  │  │      ├─issue39777
│  │  │      │  ├─a
│  │  │      │  └─b
│  │  │      ├─issue44031
│  │  │      │  ├─a
│  │  │      │  ├─b
│  │  │      │  └─main
│  │  │      ├─issue47837
│  │  │      │  ├─a
│  │  │      │  └─main
│  │  │      ├─issue58966
│  │  │      └─trivial
│  │  ├─testso
│  │  │  └─testdata
│  │  ├─testsovar
│  │  │  └─testdata
│  │  └─testtls
│  ├─chrome
│  │  └─gophertool
│  ├─ios
│  ├─linkcheck
│  ├─reboot
│  ├─swig
│  │  ├─callback
│  │  └─stdio
│  └─wasm
├─pkg
│  ├─include
│  └─tool
│      └─windows_amd64
├─SDK
│  └─go1.20.3
│      ├─api
│      ├─bin
│      ├─doc
│      ├─lib
│      │  └─time
│      ├─misc
│      │  ├─android
│      │  ├─arm
│      │  ├─cgo
│      │  │  ├─errors
│      │  │  │  └─testdata
│      │  │  ├─fortran
│      │  │  │  ├─helloworld
│      │  │  │  └─testdata
│      │  │  │      └─testprog
│      │  │  ├─gmp
│      │  │  ├─life
│      │  │  │  └─testdata
│      │  │  ├─nocgo
│      │  │  ├─stdio
│      │  │  │  └─testdata
│      │  │  │      └─stdio
│      │  │  ├─test
│      │  │  │  ├─gcc68255
│      │  │  │  ├─issue20266
│      │  │  │  ├─issue23555a
│      │  │  │  ├─issue23555b
│      │  │  │  ├─issue24161arg
│      │  │  │  ├─issue24161e0
│      │  │  │  ├─issue24161e1
│      │  │  │  ├─issue24161e2
│      │  │  │  ├─issue24161res
│      │  │  │  ├─issue26213
│      │  │  │  ├─issue26430
│      │  │  │  ├─issue26743
│      │  │  │  ├─issue27054
│      │  │  │  ├─issue27340
│      │  │  │  ├─issue29563
│      │  │  │  ├─issue30527
│      │  │  │  ├─issue41761a
│      │  │  │  ├─issue43639
│      │  │  │  ├─issue52611a
│      │  │  │  ├─issue52611b
│      │  │  │  ├─issue8756
│      │  │  │  ├─issue8828
│      │  │  │  ├─issue9026
│      │  │  │  ├─issue9400
│      │  │  │  ├─issue9510a
│      │  │  │  └─issue9510b
│      │  │  ├─testcarchive
│      │  │  │  └─testdata
│      │  │  │      ├─libgo
│      │  │  │      ├─libgo2
│      │  │  │      ├─libgo3
│      │  │  │      ├─libgo4
│      │  │  │      ├─libgo6
│      │  │  │      ├─libgo7
│      │  │  │      ├─libgo8
│      │  │  │      └─p
│      │  │  ├─testcshared
│      │  │  │  └─testdata
│      │  │  │      ├─go2c2go
│      │  │  │      │  ├─go
│      │  │  │      │  ├─m1
│      │  │  │      │  └─m2
│      │  │  │      ├─issue36233
│      │  │  │      ├─libgo
│      │  │  │      ├─libgo2
│      │  │  │      ├─libgo4
│      │  │  │      ├─libgo5
│      │  │  │      └─p
│      │  │  ├─testgodefs
│      │  │  │  └─testdata
│      │  │  ├─testplugin
│      │  │  │  ├─altpath
│      │  │  │  │  └─testdata
│      │  │  │  │      ├─common
│      │  │  │  │      └─plugin-mismatch
│      │  │  │  └─testdata
│      │  │  │      ├─checkdwarf
│      │  │  │      ├─common
│      │  │  │      ├─forkexec
│      │  │  │      ├─host
│      │  │  │      ├─iface
│      │  │  │      ├─iface_a
│      │  │  │      ├─iface_b
│      │  │  │      ├─iface_i
│      │  │  │      ├─issue18584
│      │  │  │      ├─issue18676
│      │  │  │      │  └─dynamodbstreamsevt
│      │  │  │      ├─issue19418
│      │  │  │      ├─issue19529
│      │  │  │      ├─issue19534
│      │  │  │      ├─issue22175
│      │  │  │      ├─issue22295.pkg
│      │  │  │      ├─issue24351
│      │  │  │      ├─issue25756
│      │  │  │      │  └─plugin
│      │  │  │      ├─issue44956
│      │  │  │      │  └─base
│      │  │  │      ├─issue52937
│      │  │  │      ├─issue53989
│      │  │  │      │  └─p
│      │  │  │      ├─method
│      │  │  │      ├─method2
│      │  │  │      │  └─p
│      │  │  │      ├─method3
│      │  │  │      │  └─p
│      │  │  │      ├─plugin1
│      │  │  │      ├─plugin2
│      │  │  │      ├─sub
│      │  │  │      │  └─plugin1
│      │  │  │      ├─unnamed1
│      │  │  │      └─unnamed2
│      │  │  ├─testsanitizers
│      │  │  │  └─testdata
│      │  │  │      └─asan_linkerx
│      │  │  │          └─p
│      │  │  ├─testshared
│      │  │  │  └─testdata
│      │  │  │      ├─dep2
│      │  │  │      ├─dep3
│      │  │  │      ├─depBase
│      │  │  │      ├─division
│      │  │  │      ├─exe
│      │  │  │      ├─exe2
│      │  │  │      ├─exe3
│      │  │  │      ├─execgo
│      │  │  │      ├─explicit
│      │  │  │      ├─gcdata
│      │  │  │      │  ├─main
│      │  │  │      │  └─p
│      │  │  │      ├─global
│      │  │  │      ├─globallib
│      │  │  │      ├─iface
│      │  │  │      ├─iface_a
│      │  │  │      ├─iface_b
│      │  │  │      ├─iface_i
│      │  │  │      ├─implicit
│      │  │  │      ├─implicitcmd
│      │  │  │      ├─issue25065
│      │  │  │      ├─issue30768
│      │  │  │      │  └─issue30768lib
│      │  │  │      ├─issue39777
│      │  │  │      │  ├─a
│      │  │  │      │  └─b
│      │  │  │      ├─issue44031
│      │  │  │      │  ├─a
│      │  │  │      │  ├─b
│      │  │  │      │  └─main
│      │  │  │      ├─issue47837
│      │  │  │      │  ├─a
│      │  │  │      │  └─main
│      │  │  │      ├─issue58966
│      │  │  │      └─trivial
│      │  │  ├─testso
│      │  │  │  └─testdata
│      │  │  ├─testsovar
│      │  │  │  └─testdata
│      │  │  └─testtls
│      │  ├─chrome
│      │  │  └─gophertool
│      │  ├─ios
│      │  ├─linkcheck
│      │  ├─reboot
│      │  ├─swig
│      │  │  ├─callback
│      │  │  └─stdio
│      │  └─wasm
│      ├─pkg
│      │  ├─include
│      │  └─tool
│      │      └─windows_amd64
│      ├─src
│      │  ├─archive
│      │  │  ├─tar
│      │  │  │  └─testdata
│      │  │  └─zip
│      │  │      └─testdata
│      │  ├─arena
│      │  ├─bufio
│      │  ├─builtin
│      │  ├─bytes
│      │  ├─cmd
│      │  │  ├─addr2line
│      │  │  ├─api
│      │  │  │  └─testdata
│      │  │  │      └─src
│      │  │  │          ├─issue21181
│      │  │  │          │  ├─dep
│      │  │  │          │  ├─indirect
│      │  │  │          │  └─p
│      │  │  │          ├─issue29837
│      │  │  │          │  └─p
│      │  │  │          └─pkg
│      │  │  │              ├─p1
│      │  │  │              ├─p2
│      │  │  │              ├─p3
│      │  │  │              └─p4
│      │  │  ├─asm
│      │  │  │  └─internal
│      │  │  │      ├─arch
│      │  │  │      ├─asm
│      │  │  │      │  └─testdata
│      │  │  │      │      └─avx512enc
│      │  │  │      ├─flags
│      │  │  │      └─lex
│      │  │  ├─buildid
│      │  │  ├─cgo
│      │  │  ├─compile
│      │  │  │  └─internal
│      │  │  │      ├─abi
│      │  │  │      ├─abt
│      │  │  │      ├─amd64
│      │  │  │      ├─arm
│      │  │  │      ├─arm64
│      │  │  │      ├─base
│      │  │  │      ├─bitvec
│      │  │  │      ├─compare
│      │  │  │      ├─coverage
│      │  │  │      ├─deadcode
│      │  │  │      ├─devirtualize
│      │  │  │      ├─dwarfgen
│      │  │  │      ├─escape
│      │  │  │      ├─gc
│      │  │  │      ├─importer
│      │  │  │      │  └─testdata
│      │  │  │      │      └─versions
│      │  │  │      ├─inline
│      │  │  │      ├─ir
│      │  │  │      ├─liveness
│      │  │  │      ├─logopt
│      │  │  │      ├─loong64
│      │  │  │      ├─mips
│      │  │  │      ├─mips64
│      │  │  │      ├─noder
│      │  │  │      ├─objw
│      │  │  │      ├─pgo
│      │  │  │      ├─pkginit
│      │  │  │      ├─ppc64
│      │  │  │      ├─reflectdata
│      │  │  │      ├─riscv64
│      │  │  │      ├─s390x
│      │  │  │      ├─ssa
│      │  │  │      │  ├─testdata
│      │  │  │      │  └─_gen
│      │  │  │      ├─ssagen
│      │  │  │      ├─staticdata
│      │  │  │      ├─staticinit
│      │  │  │      ├─syntax
│      │  │  │      │  └─testdata
│      │  │  │      ├─test
│      │  │  │      │  └─testdata
│      │  │  │      │      ├─gen
│      │  │  │      │      ├─mysort
│      │  │  │      │      ├─pgo
│      │  │  │      │      │  └─inline
│      │  │  │      │      └─reproducible
│      │  │  │      ├─typebits
│      │  │  │      ├─typecheck
│      │  │  │      │  └─_builtin
│      │  │  │      ├─types
│      │  │  │      ├─types2
│      │  │  │      │  └─testdata
│      │  │  │      │      └─local
│      │  │  │      ├─walk
│      │  │  │      ├─wasm
│      │  │  │      └─x86
│      │  │  ├─covdata
│      │  │  │  └─testdata
│      │  │  ├─cover
│      │  │  │  └─testdata
│      │  │  │      ├─html
│      │  │  │      └─pkgcfg
│      │  │  │          ├─a
│      │  │  │          ├─b
│      │  │  │          └─main
│      │  │  ├─dist
│      │  │  ├─doc
│      │  │  │  └─testdata
│      │  │  │      ├─merge
│      │  │  │      └─nested
│      │  │  │          ├─empty
│      │  │  │          └─nested
│      │  │  ├─fix
│      │  │  ├─go
│      │  │  │  ├─internal
│      │  │  │  │  ├─auth
│      │  │  │  │  ├─base
│      │  │  │  │  ├─bug
│      │  │  │  │  ├─cache
│      │  │  │  │  ├─cfg
│      │  │  │  │  ├─clean
│      │  │  │  │  ├─cmdflag
│      │  │  │  │  ├─doc
│      │  │  │  │  ├─envcmd
│      │  │  │  │  ├─fix
│      │  │  │  │  ├─fmtcmd
│      │  │  │  │  ├─fsys
│      │  │  │  │  ├─generate
│      │  │  │  │  ├─get
│      │  │  │  │  ├─help
│      │  │  │  │  ├─imports
│      │  │  │  │  │  └─testdata
│      │  │  │  │  │      ├─android
│      │  │  │  │  │      ├─illumos
│      │  │  │  │  │      └─star
│      │  │  │  │  ├─list
│      │  │  │  │  ├─load
│      │  │  │  │  ├─lockedfile
│      │  │  │  │  │  └─internal
│      │  │  │  │  │      └─filelock
│      │  │  │  │  ├─mmap
│      │  │  │  │  ├─modcmd
│      │  │  │  │  ├─modconv
│      │  │  │  │  │  └─testdata
│      │  │  │  │  ├─modfetch
│      │  │  │  │  │  ├─codehost
│      │  │  │  │  │  └─zip_sum_test
│      │  │  │  │  │      └─testdata
│      │  │  │  │  ├─modget
│      │  │  │  │  ├─modindex
│      │  │  │  │  │  └─testdata
│      │  │  │  │  │      └─ignore_non_source
│      │  │  │  │  ├─modinfo
│      │  │  │  │  ├─modload
│      │  │  │  │  ├─mvs
│      │  │  │  │  ├─par
│      │  │  │  │  ├─robustio
│      │  │  │  │  ├─run
│      │  │  │  │  ├─script
│      │  │  │  │  │  └─scripttest
│      │  │  │  │  ├─search
│      │  │  │  │  ├─str
│      │  │  │  │  ├─test
│      │  │  │  │  │  └─internal
│      │  │  │  │  │      └─genflags
│      │  │  │  │  ├─tool
│      │  │  │  │  ├─trace
│      │  │  │  │  ├─vcs
│      │  │  │  │  ├─vcweb
│      │  │  │  │  │  └─vcstest
│      │  │  │  │  ├─version
│      │  │  │  │  ├─vet
│      │  │  │  │  ├─web
│      │  │  │  │  ├─work
│      │  │  │  │  └─workcmd
│      │  │  │  └─testdata
│      │  │  │      ├─failssh
│      │  │  │      ├─mod
│      │  │  │      ├─script
│      │  │  │      └─vcstest
│      │  │  │          ├─auth
│      │  │  │          ├─bzr
│      │  │  │          ├─fossil
│      │  │  │          ├─git
│      │  │  │          ├─go
│      │  │  │          │  └─mod
│      │  │  │          ├─hg
│      │  │  │          └─svn
│      │  │  ├─gofmt
│      │  │  │  └─testdata
│      │  │  ├─internal
│      │  │  │  ├─archive
│      │  │  │  │  └─testdata
│      │  │  │  │      └─mycgo
│      │  │  │  ├─bio
│      │  │  │  ├─browser
│      │  │  │  ├─buildid
│      │  │  │  │  └─testdata
│      │  │  │  ├─codesign
│      │  │  │  ├─cov
│      │  │  │  │  └─testdata
│      │  │  │  ├─dwarf
│      │  │  │  ├─edit
│      │  │  │  ├─gcprog
│      │  │  │  ├─goobj
│      │  │  │  ├─metadata
│      │  │  │  ├─moddeps
│      │  │  │  ├─notsha256
│      │  │  │  ├─obj
│      │  │  │  │  ├─arm
│      │  │  │  │  ├─arm64
│      │  │  │  │  ├─loong64
│      │  │  │  │  ├─mips
│      │  │  │  │  ├─ppc64
│      │  │  │  │  ├─riscv
│      │  │  │  │  │  └─testdata
│      │  │  │  │  │      └─testbranch
│      │  │  │  │  ├─s390x
│      │  │  │  │  ├─wasm
│      │  │  │  │  └─x86
│      │  │  │  ├─objabi
│      │  │  │  ├─objfile
│      │  │  │  ├─osinfo
│      │  │  │  ├─pkgpath
│      │  │  │  ├─pkgpattern
│      │  │  │  ├─quoted
│      │  │  │  ├─src
│      │  │  │  ├─sys
│      │  │  │  ├─test2json
│      │  │  │  │  └─testdata
│      │  │  │  └─traceviewer
│      │  │  ├─link
│      │  │  │  ├─internal
│      │  │  │  │  ├─amd64
│      │  │  │  │  ├─arm
│      │  │  │  │  ├─arm64
│      │  │  │  │  ├─benchmark
│      │  │  │  │  ├─dwtest
│      │  │  │  │  ├─ld
│      │  │  │  │  │  └─testdata
│      │  │  │  │  │      ├─deadcode
│      │  │  │  │  │      ├─httptest
│      │  │  │  │  │      │  └─main
│      │  │  │  │  │      ├─issue10978
│      │  │  │  │  │      ├─issue25459
│      │  │  │  │  │      │  ├─a
│      │  │  │  │  │      │  └─main
│      │  │  │  │  │      ├─issue26237
│      │  │  │  │  │      │  ├─b.dir
│      │  │  │  │  │      │  └─main
│      │  │  │  │  │      ├─issue32233
│      │  │  │  │  │      │  ├─lib
│      │  │  │  │  │      │  └─main
│      │  │  │  │  │      ├─issue38192
│      │  │  │  │  │      ├─issue39256
│      │  │  │  │  │      ├─issue39757
│      │  │  │  │  │      ├─issue42484
│      │  │  │  │  │      └─stackcheck
│      │  │  │  │  ├─loadelf
│      │  │  │  │  ├─loader
│      │  │  │  │  ├─loadmacho
│      │  │  │  │  ├─loadpe
│      │  │  │  │  ├─loadxcoff
│      │  │  │  │  ├─loong64
│      │  │  │  │  ├─mips
│      │  │  │  │  ├─mips64
│      │  │  │  │  ├─ppc64
│      │  │  │  │  ├─riscv64
│      │  │  │  │  ├─s390x
│      │  │  │  │  ├─sym
│      │  │  │  │  ├─wasm
│      │  │  │  │  └─x86
│      │  │  │  └─testdata
│      │  │  │      ├─pe-binutils
│      │  │  │      ├─pe-llvm
│      │  │  │      ├─testBuildFortvOS
│      │  │  │      ├─testHashedSyms
│      │  │  │      ├─testIndexMismatch
│      │  │  │      └─testRO
│      │  │  ├─nm
│      │  │  ├─objdump
│      │  │  │  └─testdata
│      │  │  │      └─testfilenum
│      │  │  ├─pack
│      │  │  ├─pprof
│      │  │  │  └─testdata
│      │  │  ├─test2json
│      │  │  ├─trace
│      │  │  │  └─static
│      │  │  ├─vendor
│      │  │  │  ├─github.com
│      │  │  │  │  ├─google
│      │  │  │  │  │  └─pprof
│      │  │  │  │  │      ├─driver
│      │  │  │  │  │      ├─internal
│      │  │  │  │  │      │  ├─binutils
│      │  │  │  │  │      │  ├─driver
│      │  │  │  │  │      │  │  └─html
│      │  │  │  │  │      │  ├─elfexec
│      │  │  │  │  │      │  ├─graph
│      │  │  │  │  │      │  ├─measurement
│      │  │  │  │  │      │  ├─plugin
│      │  │  │  │  │      │  ├─report
│      │  │  │  │  │      │  ├─symbolizer
│      │  │  │  │  │      │  ├─symbolz
│      │  │  │  │  │      │  └─transport
│      │  │  │  │  │      ├─profile
│      │  │  │  │  │      └─third_party
│      │  │  │  │  │          ├─d3flamegraph
│      │  │  │  │  │          └─svgpan
│      │  │  │  │  └─ianlancetaylor
│      │  │  │  │      └─demangle
│      │  │  │  └─golang.org
│      │  │  │      └─x
│      │  │  │          ├─arch
│      │  │  │          │  ├─arm
│      │  │  │          │  │  └─armasm
│      │  │  │          │  ├─arm64
│      │  │  │          │  │  └─arm64asm
│      │  │  │          │  ├─ppc64
│      │  │  │          │  │  └─ppc64asm
│      │  │  │          │  └─x86
│      │  │  │          │      └─x86asm
│      │  │  │          ├─mod
│      │  │  │          │  ├─internal
│      │  │  │          │  │  └─lazyregexp
│      │  │  │          │  ├─modfile
│      │  │  │          │  ├─module
│      │  │  │          │  ├─semver
│      │  │  │          │  ├─sumdb
│      │  │  │          │  │  ├─dirhash
│      │  │  │          │  │  ├─note
│      │  │  │          │  │  └─tlog
│      │  │  │          │  └─zip
│      │  │  │          ├─sync
│      │  │  │          │  └─semaphore
│      │  │  │          ├─sys
│      │  │  │          │  ├─internal
│      │  │  │          │  │  └─unsafeheader
│      │  │  │          │  ├─plan9
│      │  │  │          │  ├─unix
│      │  │  │          │  └─windows
│      │  │  │          ├─term
│      │  │  │          └─tools
│      │  │  │              ├─cover
│      │  │  │              ├─go
│      │  │  │              │  ├─analysis
│      │  │  │              │  │  ├─internal
│      │  │  │              │  │  │  └─analysisflags
│      │  │  │              │  │  ├─passes
│      │  │  │              │  │  │  ├─asmdecl
│      │  │  │              │  │  │  ├─assign
│      │  │  │              │  │  │  ├─atomic
│      │  │  │              │  │  │  ├─bools
│      │  │  │              │  │  │  ├─buildtag
│      │  │  │              │  │  │  ├─cgocall
│      │  │  │              │  │  │  ├─composite
│      │  │  │              │  │  │  ├─copylock
│      │  │  │              │  │  │  ├─ctrlflow
│      │  │  │              │  │  │  ├─errorsas
│      │  │  │              │  │  │  ├─framepointer
│      │  │  │              │  │  │  ├─httpresponse
│      │  │  │              │  │  │  ├─ifaceassert
│      │  │  │              │  │  │  ├─inspect
│      │  │  │              │  │  │  ├─internal
│      │  │  │              │  │  │  │  └─analysisutil
│      │  │  │              │  │  │  ├─loopclosure
│      │  │  │              │  │  │  ├─lostcancel
│      │  │  │              │  │  │  ├─nilfunc
│      │  │  │              │  │  │  ├─printf
│      │  │  │              │  │  │  ├─shift
│      │  │  │              │  │  │  ├─sigchanyzer
│      │  │  │              │  │  │  ├─stdmethods
│      │  │  │              │  │  │  ├─stringintconv
│      │  │  │              │  │  │  ├─structtag
│      │  │  │              │  │  │  ├─testinggoroutine
│      │  │  │              │  │  │  ├─tests
│      │  │  │              │  │  │  ├─timeformat
│      │  │  │              │  │  │  ├─unmarshal
│      │  │  │              │  │  │  ├─unreachable
│      │  │  │              │  │  │  ├─unsafeptr
│      │  │  │              │  │  │  └─unusedresult
│      │  │  │              │  │  └─unitchecker
│      │  │  │              │  ├─ast
│      │  │  │              │  │  ├─astutil
│      │  │  │              │  │  └─inspector
│      │  │  │              │  ├─cfg
│      │  │  │              │  └─types
│      │  │  │              │      ├─objectpath
│      │  │  │              │      └─typeutil
│      │  │  │              └─internal
│      │  │  │                  ├─analysisinternal
│      │  │  │                  ├─facts
│      │  │  │                  └─typeparams
│      │  │  └─vet
│      │  │      └─testdata
│      │  │          ├─asm
│      │  │          ├─assign
│      │  │          ├─atomic
│      │  │          ├─bool
│      │  │          ├─buildtag
│      │  │          ├─cgo
│      │  │          ├─composite
│      │  │          ├─copylock
│      │  │          ├─deadcode
│      │  │          ├─httpresponse
│      │  │          ├─lostcancel
│      │  │          ├─method
│      │  │          ├─nilfunc
│      │  │          ├─print
│      │  │          ├─rangeloop
│      │  │          ├─shift
│      │  │          ├─structtag
│      │  │          ├─tagtest
│      │  │          ├─testingpkg
│      │  │          ├─unmarshal
│      │  │          ├─unsafeptr
│      │  │          └─unused
│      │  ├─compress
│      │  │  ├─bzip2
│      │  │  │  └─testdata
│      │  │  ├─flate
│      │  │  │  └─testdata
│      │  │  ├─gzip
│      │  │  │  └─testdata
│      │  │  ├─lzw
│      │  │  ├─testdata
│      │  │  └─zlib
│      │  ├─container
│      │  │  ├─heap
│      │  │  ├─list
│      │  │  └─ring
│      │  ├─context
│      │  ├─crypto
│      │  │  ├─aes
│      │  │  ├─boring
│      │  │  ├─cipher
│      │  │  ├─des
│      │  │  ├─dsa
│      │  │  ├─ecdh
│      │  │  ├─ecdsa
│      │  │  │  └─testdata
│      │  │  ├─ed25519
│      │  │  │  └─testdata
│      │  │  ├─elliptic
│      │  │  ├─hmac
│      │  │  ├─internal
│      │  │  │  ├─alias
│      │  │  │  ├─bigmod
│      │  │  │  │  └─_asm
│      │  │  │  ├─boring
│      │  │  │  │  ├─bbig
│      │  │  │  │  ├─bcache
│      │  │  │  │  ├─fipstls
│      │  │  │  │  ├─sig
│      │  │  │  │  └─syso
│      │  │  │  ├─edwards25519
│      │  │  │  │  └─field
│      │  │  │  │      └─_asm
│      │  │  │  ├─nistec
│      │  │  │  │  └─fiat
│      │  │  │  └─randutil
│      │  │  ├─md5
│      │  │  ├─rand
│      │  │  ├─rc4
│      │  │  ├─rsa
│      │  │  │  └─testdata
│      │  │  ├─sha1
│      │  │  ├─sha256
│      │  │  ├─sha512
│      │  │  ├─subtle
│      │  │  ├─tls
│      │  │  │  ├─fipsonly
│      │  │  │  └─testdata
│      │  │  └─x509
│      │  │      ├─internal
│      │  │      │  └─macos
│      │  │      ├─pkix
│      │  │      └─testdata
│      │  ├─database
│      │  │  └─sql
│      │  │      └─driver
│      │  ├─debug
│      │  │  ├─buildinfo
│      │  │  ├─dwarf
│      │  │  │  └─testdata
│      │  │  ├─elf
│      │  │  │  └─testdata
│      │  │  ├─gosym
│      │  │  │  └─testdata
│      │  │  ├─macho
│      │  │  │  └─testdata
│      │  │  ├─pe
│      │  │  │  └─testdata
│      │  │  └─plan9obj
│      │  │      └─testdata
│      │  ├─embed
│      │  │  └─internal
│      │  │      └─embedtest
│      │  │          └─testdata
│      │  │              ├─-not-hidden
│      │  │              ├─.hidden
│      │  │              │  ├─.more
│      │  │              │  ├─more
│      │  │              │  └─_more
│      │  │              ├─i
│      │  │              │  └─j
│      │  │              │      └─k
│      │  │              └─_hidden
│      │  ├─encoding
│      │  │  ├─ascii85
│      │  │  ├─asn1
│      │  │  ├─base32
│      │  │  ├─base64
│      │  │  ├─binary
│      │  │  ├─csv
│      │  │  ├─gob
│      │  │  ├─hex
│      │  │  ├─json
│      │  │  │  └─testdata
│      │  │  ├─pem
│      │  │  └─xml
│      │  ├─errors
│      │  ├─expvar
│      │  ├─flag
│      │  ├─fmt
│      │  ├─go
│      │  │  ├─ast
│      │  │  ├─build
│      │  │  │  ├─constraint
│      │  │  │  └─testdata
│      │  │  │      ├─alltags
│      │  │  │      ├─bads
│      │  │  │      ├─cgo_disabled
│      │  │  │      ├─doc
│      │  │  │      ├─empty
│      │  │  │      ├─multi
│      │  │  │      ├─non_source_tags
│      │  │  │      ├─other
│      │  │  │      │  └─file
│      │  │  │      └─withvendor
│      │  │  │          └─src
│      │  │  │              └─a
│      │  │  │                  ├─b
│      │  │  │                  └─vendor
│      │  │  │                      └─c
│      │  │  │                          └─d
│      │  │  ├─constant
│      │  │  ├─doc
│      │  │  │  ├─comment
│      │  │  │  │  └─testdata
│      │  │  │  └─testdata
│      │  │  │      ├─examples
│      │  │  │      └─pkgdoc
│      │  │  ├─format
│      │  │  ├─importer
│      │  │  ├─internal
│      │  │  │  ├─gccgoimporter
│      │  │  │  │  └─testdata
│      │  │  │  ├─gcimporter
│      │  │  │  │  └─testdata
│      │  │  │  │      └─versions
│      │  │  │  ├─srcimporter
│      │  │  │  │  └─testdata
│      │  │  │  │      ├─issue20855
│      │  │  │  │      ├─issue23092
│      │  │  │  │      └─issue24392
│      │  │  │  └─typeparams
│      │  │  ├─parser
│      │  │  │  └─testdata
│      │  │  │      ├─issue42951
│      │  │  │      │  └─not_a_file.go
│      │  │  │      └─resolution
│      │  │  ├─printer
│      │  │  │  └─testdata
│      │  │  ├─scanner
│      │  │  ├─token
│      │  │  └─types
│      │  │      └─testdata
│      │  │          └─local
│      │  ├─hash
│      │  │  ├─adler32
│      │  │  ├─crc32
│      │  │  ├─crc64
│      │  │  ├─fnv
│      │  │  └─maphash
│      │  ├─html
│      │  │  └─template
│      │  │      └─testdata
│      │  ├─image
│      │  │  ├─color
│      │  │  │  └─palette
│      │  │  ├─draw
│      │  │  ├─gif
│      │  │  ├─internal
│      │  │  │  └─imageutil
│      │  │  ├─jpeg
│      │  │  ├─png
│      │  │  │  └─testdata
│      │  │  │      └─pngsuite
│      │  │  └─testdata
│      │  ├─index
│      │  │  └─suffixarray
│      │  ├─internal
│      │  │  ├─abi
│      │  │  │  └─testdata
│      │  │  ├─buildcfg
│      │  │  ├─bytealg
│      │  │  ├─cfg
│      │  │  ├─coverage
│      │  │  │  ├─calloc
│      │  │  │  ├─cformat
│      │  │  │  ├─cmerge
│      │  │  │  ├─decodecounter
│      │  │  │  ├─decodemeta
│      │  │  │  ├─encodecounter
│      │  │  │  ├─encodemeta
│      │  │  │  ├─pods
│      │  │  │  ├─rtcov
│      │  │  │  ├─slicereader
│      │  │  │  ├─slicewriter
│      │  │  │  ├─stringtab
│      │  │  │  ├─test
│      │  │  │  └─uleb128
│      │  │  ├─cpu
│      │  │  ├─dag
│      │  │  ├─diff
│      │  │  │  └─testdata
│      │  │  ├─fmtsort
│      │  │  ├─fuzz
│      │  │  ├─goarch
│      │  │  ├─godebug
│      │  │  ├─goexperiment
│      │  │  ├─goos
│      │  │  ├─goroot
│      │  │  ├─goversion
│      │  │  ├─intern
│      │  │  ├─itoa
│      │  │  ├─lazyregexp
│      │  │  ├─lazytemplate
│      │  │  ├─nettrace
│      │  │  ├─obscuretestdata
│      │  │  ├─oserror
│      │  │  ├─pkgbits
│      │  │  ├─platform
│      │  │  ├─poll
│      │  │  ├─profile
│      │  │  ├─race
│      │  │  ├─reflectlite
│      │  │  ├─safefilepath
│      │  │  ├─saferio
│      │  │  ├─singleflight
│      │  │  ├─syscall
│      │  │  │  ├─execenv
│      │  │  │  ├─unix
│      │  │  │  └─windows
│      │  │  │      ├─registry
│      │  │  │      └─sysdll
│      │  │  ├─sysinfo
│      │  │  ├─testenv
│      │  │  ├─testlog
│      │  │  ├─testpty
│      │  │  ├─trace
│      │  │  │  └─testdata
│      │  │  ├─txtar
│      │  │  ├─types
│      │  │  │  ├─errors
│      │  │  │  └─testdata
│      │  │  │      ├─check
│      │  │  │      │  ├─decls2
│      │  │  │      │  ├─importdecl0
│      │  │  │      │  ├─importdecl1
│      │  │  │      │  └─issue25008
│      │  │  │      ├─examples
│      │  │  │      ├─fixedbugs
│      │  │  │      └─spec
│      │  │  ├─unsafeheader
│      │  │  └─xcoff
│      │  │      └─testdata
│      │  ├─io
│      │  │  ├─fs
│      │  │  └─ioutil
│      │  │      └─testdata
│      │  ├─log
│      │  │  └─syslog
│      │  ├─math
│      │  │  ├─big
│      │  │  ├─bits
│      │  │  ├─cmplx
│      │  │  └─rand
│      │  ├─mime
│      │  │  ├─multipart
│      │  │  │  └─testdata
│      │  │  ├─quotedprintable
│      │  │  └─testdata
│      │  ├─net
│      │  │  ├─http
│      │  │  │  ├─cgi
│      │  │  │  │  └─testdata
│      │  │  │  ├─cookiejar
│      │  │  │  ├─fcgi
│      │  │  │  ├─httptest
│      │  │  │  ├─httptrace
│      │  │  │  ├─httputil
│      │  │  │  ├─internal
│      │  │  │  │  ├─ascii
│      │  │  │  │  └─testcert
│      │  │  │  ├─pprof
│      │  │  │  └─testdata
│      │  │  ├─internal
│      │  │  │  └─socktest
│      │  │  ├─mail
│      │  │  ├─netip
│      │  │  ├─rpc
│      │  │  │  └─jsonrpc
│      │  │  ├─smtp
│      │  │  ├─testdata
│      │  │  ├─textproto
│      │  │  └─url
│      │  ├─os
│      │  │  ├─exec
│      │  │  │  └─internal
│      │  │  │      └─fdtest
│      │  │  ├─signal
│      │  │  ├─testdata
│      │  │  │  ├─dirfs
│      │  │  │  │  └─dir
│      │  │  │  └─issue37161
│      │  │  └─user
│      │  ├─path
│      │  │  └─filepath
│      │  ├─plugin
│      │  ├─reflect
│      │  │  └─internal
│      │  │      ├─example1
│      │  │      └─example2
│      │  ├─regexp
│      │  │  ├─syntax
│      │  │  └─testdata
│      │  ├─runtime
│      │  │  ├─asan
│      │  │  ├─cgo
│      │  │  ├─coverage
│      │  │  │  └─testdata
│      │  │  │      └─issue56006
│      │  │  ├─debug
│      │  │  ├─internal
│      │  │  │  ├─atomic
│      │  │  │  ├─math
│      │  │  │  ├─startlinetest
│      │  │  │  ├─sys
│      │  │  │  └─syscall
│      │  │  ├─metrics
│      │  │  ├─msan
│      │  │  ├─pprof
│      │  │  │  └─testdata
│      │  │  │      └─mappingtest
│      │  │  ├─race
│      │  │  │  ├─internal
│      │  │  │  │  ├─amd64v1
│      │  │  │  │  └─amd64v3
│      │  │  │  └─testdata
│      │  │  ├─testdata
│      │  │  │  ├─testexithooks
│      │  │  │  ├─testfaketime
│      │  │  │  ├─testprog
│      │  │  │  ├─testprogcgo
│      │  │  │  │  └─windows
│      │  │  │  ├─testprognet
│      │  │  │  ├─testwinlib
│      │  │  │  ├─testwinlibsignal
│      │  │  │  ├─testwinlibthrow
│      │  │  │  └─testwinsignal
│      │  │  └─trace
│      │  ├─sort
│      │  ├─strconv
│      │  │  └─testdata
│      │  ├─strings
│      │  ├─sync
│      │  │  └─atomic
│      │  ├─syscall
│      │  │  └─js
│      │  ├─testdata
│      │  ├─testing
│      │  │  ├─fstest
│      │  │  ├─internal
│      │  │  │  └─testdeps
│      │  │  ├─iotest
│      │  │  └─quick
│      │  ├─text
│      │  │  ├─scanner
│      │  │  ├─tabwriter
│      │  │  └─template
│      │  │      ├─parse
│      │  │      └─testdata
│      │  ├─time
│      │  │  ├─testdata
│      │  │  └─tzdata
│      │  ├─unicode
│      │  │  ├─utf16
│      │  │  └─utf8
│      │  ├─unsafe
│      │  └─vendor
│      │      └─golang.org
│      │          └─x
│      │              ├─crypto
│      │              │  ├─chacha20
│      │              │  ├─chacha20poly1305
│      │              │  ├─cryptobyte
│      │              │  │  └─asn1
│      │              │  ├─hkdf
│      │              │  └─internal
│      │              │      ├─alias
│      │              │      └─poly1305
│      │              ├─net
│      │              │  ├─dns
│      │              │  │  └─dnsmessage
│      │              │  ├─http
│      │              │  │  ├─httpguts
│      │              │  │  └─httpproxy
│      │              │  ├─http2
│      │              │  │  └─hpack
│      │              │  ├─idna
│      │              │  ├─lif
│      │              │  ├─nettest
│      │              │  └─route
│      │              ├─sys
│      │              │  └─cpu
│      │              └─text
│      │                  ├─secure
│      │                  │  └─bidirule
│      │                  ├─transform
│      │                  └─unicode
│      │                      ├─bidi
│      │                      └─norm
│      └─test
│          ├─abi
│          ├─alias3.dir
│          ├─asmhdr.dir
│          ├─bench
│          │  ├─garbage
│          │  └─go1
│          ├─chan
│          ├─closure3.dir
│          ├─closure5.dir
│          ├─codegen
│          ├─ddd2.dir
│          ├─dwarf
│          │  └─dwarf.dir
│          ├─fixedbugs
│          │  ├─bug083.dir
│          │  ├─bug088.dir
│          │  ├─bug106.dir
│          │  ├─bug133.dir
│          │  ├─bug160.dir
│          │  ├─bug191.dir
│          │  ├─bug222.dir
│          │  ├─bug248.dir
│          │  ├─bug282.dir
│          │  ├─bug306.dir
│          │  ├─bug313.dir
│          │  ├─bug322.dir
│          │  ├─bug324.dir
│          │  ├─bug335.dir
│          │  ├─bug345.dir
│          │  ├─bug367.dir
│          │  ├─bug369.dir
│          │  ├─bug377.dir
│          │  ├─bug382.dir
│          │  ├─bug392.dir
│          │  ├─bug396.dir
│          │  ├─bug404.dir
│          │  ├─bug407.dir
│          │  ├─bug414.dir
│          │  ├─bug415.dir
│          │  ├─bug424.dir
│          │  ├─bug437.dir
│          │  ├─bug448.dir
│          │  ├─bug460.dir
│          │  ├─bug465.dir
│          │  ├─bug466.dir
│          │  ├─bug467.dir
│          │  ├─bug468.dir
│          │  ├─bug472.dir
│          │  ├─bug478.dir
│          │  ├─bug479.dir
│          │  ├─bug480.dir
│          │  ├─bug488.dir
│          │  ├─bug492.dir
│          │  ├─bug504.dir
│          │  ├─bug506.dir
│          │  ├─bug507.dir
│          │  ├─bug510.dir
│          │  ├─bug511.dir
│          │  ├─gcc67968.dir
│          │  ├─issue10066.dir
│          │  ├─issue10219.dir
│          │  ├─issue10700.dir
│          │  ├─issue11053.dir
│          │  ├─issue11656.dir
│          │  ├─issue12677.dir
│          │  ├─issue13777.dir
│          │  ├─issue14164.dir
│          │  ├─issue14331.dir
│          │  ├─issue15071.dir
│          │  ├─issue15470.dir
│          │  ├─issue15514.dir
│          │  ├─issue15548.dir
│          │  ├─issue15572.dir
│          │  ├─issue15609.dir
│          │  ├─issue15646.dir
│          │  ├─issue15838.dir
│          │  ├─issue15920.dir
│          │  ├─issue16133.dir
│          │  ├─issue16317.dir
│          │  ├─issue16616.dir
│          │  ├─issue18419.dir
│          │  ├─issue18895.dir
│          │  ├─issue18911.dir
│          │  ├─issue19028.dir
│          │  ├─issue19261.dir
│          │  ├─issue19467.dir
│          │  ├─issue19507.dir
│          │  ├─issue19548.dir
│          │  ├─issue19699.dir
│          │  ├─issue19764.dir
│          │  ├─issue20014.dir
│          │  │  └─a
│          │  ├─issue20682.dir
│          │  ├─issue21120.dir
│          │  ├─issue22877.dir
│          │  ├─issue22941.dir
│          │  ├─issue22962.dir
│          │  ├─issue23179.dir
│          │  ├─issue23311.dir
│          │  ├─issue24693.dir
│          │  ├─issue24761.dir
│          │  ├─issue24801.dir
│          │  ├─issue25055.dir
│          │  ├─issue25984.dir
│          │  ├─issue26341.dir
│          │  ├─issue27836.dir
│          │  ├─issue29610.dir
│          │  ├─issue29612.dir
│          │  │  ├─p1
│          │  │  │  └─ssa
│          │  │  └─p2
│          │  │      └─ssa
│          │  ├─issue29919.dir
│          │  ├─issue30659.dir
│          │  ├─issue30862.dir
│          │  │  ├─a
│          │  │  └─b
│          │  ├─issue30907.dir
│          │  ├─issue30908.dir
│          │  ├─issue31053.dir
│          │  ├─issue31252.dir
│          │  ├─issue31636.dir
│          │  ├─issue31637.dir
│          │  ├─issue31959.dir
│          │  ├─issue32595.dir
│          │  ├─issue32778.dir
│          │  ├─issue32901.dir
│          │  ├─issue32922.dir
│          │  ├─issue33013.dir
│          │  ├─issue33020.dir
│          │  ├─issue33020a.dir
│          │  ├─issue33158.dir
│          │  ├─issue33219.dir
│          │  ├─issue33739.dir
│          │  ├─issue33866.dir
│          │  ├─issue34503.dir
│          │  ├─issue34577.dir
│          │  ├─issue3552.dir
│          │  ├─issue35586.dir
│          │  ├─issue35739.dir
│          │  ├─issue36085.dir
│          │  ├─issue37513.dir
│          │  ├─issue37837.dir
│          │  ├─issue40252.dir
│          │  ├─issue42284.dir
│          │  ├─issue42401.dir
│          │  ├─issue4252.dir
│          │  ├─issue43164.dir
│          │  ├─issue4326.dir
│          │  ├─issue43479.dir
│          │  ├─issue43551.dir
│          │  ├─issue43633.dir
│          │  ├─issue4370.dir
│          │  ├─issue43962.dir
│          │  ├─issue44325.dir
│          │  ├─issue44330.dir
│          │  ├─issue44335.dir
│          │  ├─issue44355.dir
│          │  ├─issue44370.dir
│          │  ├─issue44732.dir
│          │  │  ├─bar
│          │  │  └─foo
│          │  ├─issue4510.dir
│          │  ├─issue45503.dir
│          │  ├─issue4590.dir
│          │  ├─issue46653.dir
│          │  │  └─bad
│          │  ├─issue47068.dir
│          │  ├─issue47087.dir
│          │  ├─issue47131.dir
│          │  ├─issue47185.dir
│          │  │  └─bad
│          │  ├─issue47201.dir
│          │  ├─issue47317.dir
│          │  ├─issue48088.dir
│          │  ├─issue4879.dir
│          │  ├─issue49016.dir
│          │  ├─issue49094.dir
│          │  ├─issue49143.dir
│          │  ├─issue4932.dir
│          │  ├─issue4964.dir
│          │  ├─issue50788.dir
│          │  ├─issue5105.dir
│          │  ├─issue5125.dir
│          │  ├─issue51291.dir
│          │  ├─issue52128.dir
│          │  ├─issue52279.dir
│          │  ├─issue5259.dir
│          │  ├─issue52590.dir
│          │  ├─issue5260.dir
│          │  ├─issue52856.dir
│          │  ├─issue52862.dir
│          │  ├─issue5291.dir
│          │  ├─issue5470.dir
│          │  ├─issue54912.dir
│          │  ├─issue5614.dir
│          │  ├─issue56280.dir
│          │  ├─issue56778.dir
│          │  ├─issue5755.dir
│          │  ├─issue58563.dir
│          │  ├─issue5910.dir
│          │  ├─issue5957.dir
│          │  ├─issue6295.dir
│          │  ├─issue6513.dir
│          │  ├─issue6789.dir
│          │  ├─issue7023.dir
│          │  ├─issue7648.dir
│          │  ├─issue7995b.dir
│          │  ├─issue8060.dir
│          │  ├─issue8280.dir
│          │  ├─issue9355.dir
│          │  ├─issue9537.dir
│          │  └─issue9608.dir
│          ├─import2.dir
│          ├─import4.dir
│          ├─interface
│          │  ├─embed1.dir
│          │  ├─embed3.dir
│          │  ├─private.dir
│          │  └─recursive1.dir
│          ├─intrinsic.dir
│          ├─ken
│          ├─linkname.dir
│          ├─method4.dir
│          ├─retjmp.dir
│          ├─runtime
│          ├─stress
│          ├─syntax
│          ├─typeparam
│          │  ├─absdiffimp.dir
│          │  ├─absdiffimp2.dir
│          │  ├─aliasimp.dir
│          │  ├─chansimp.dir
│          │  ├─dedup.dir
│          │  ├─factimp.dir
│          │  ├─gencrawler.dir
│          │  ├─geninline.dir
│          │  ├─issue46461b.dir
│          │  ├─issue47514c.dir
│          │  ├─issue47775.dir
│          │  ├─issue47892.dir
│          │  ├─issue47892b.dir
│          │  ├─issue48094.dir
│          │  ├─issue48094b.dir
│          │  ├─issue48185a.dir
│          │  ├─issue48185b.dir
│          │  ├─issue48280.dir
│          │  ├─issue48306.dir
│          │  ├─issue48337a.dir
│          │  ├─issue48337b.dir
│          │  ├─issue48454.dir
│          │  ├─issue48462.dir
│          │  ├─issue48716.dir
│          │  ├─issue48962.dir
│          │  ├─issue49027.dir
│          │  ├─issue49241.dir
│          │  ├─issue49246.dir
│          │  ├─issue49497.dir
│          │  ├─issue49524.dir
│          │  ├─issue49536.dir
│          │  ├─issue49659.dir
│          │  ├─issue49667.dir
│          │  ├─issue49893.dir
│          │  ├─issue50121.dir
│          │  ├─issue50121b.dir
│          │  ├─issue50437.dir
│          │  ├─issue50481b.dir
│          │  ├─issue50481c.dir
│          │  ├─issue50485.dir
│          │  ├─issue50486.dir
│          │  ├─issue50552.dir
│          │  ├─issue50561.dir
│          │  ├─issue50598.dir
│          │  ├─issue50841.dir
│          │  ├─issue51219.dir
│          │  ├─issue51219b.dir
│          │  ├─issue51250a.dir
│          │  ├─issue51367.dir
│          │  ├─issue51423.dir
│          │  ├─issue51836.dir
│          │  ├─issue52117.dir
│          │  ├─issue54302.dir
│          │  ├─listimp.dir
│          │  ├─listimp2.dir
│          │  ├─mapimp.dir
│          │  ├─mapsimp.dir
│          │  ├─mdempsky
│          │  │  ├─1.dir
│          │  │  ├─10.dir
│          │  │  ├─12.dir
│          │  │  ├─3.dir
│          │  │  ├─4.dir
│          │  │  ├─7.dir
│          │  │  └─8.dir
│          │  ├─mincheck.dir
│          │  ├─minimp.dir
│          │  ├─mutualimp.dir
│          │  ├─orderedmapsimp.dir
│          │  ├─pairimp.dir
│          │  ├─recoverimp.dir
│          │  ├─select.dir
│          │  ├─setsimp.dir
│          │  ├─sliceimp.dir
│          │  ├─stringerimp.dir
│          │  ├─structinit.dir
│          │  └─valimp.dir
│          └─uintptrescapes.dir
├─src
│  ├─archive
│  │  ├─tar
│  │  │  └─testdata
│  │  └─zip
│  │      └─testdata
│  ├─arena
│  ├─bufio
│  ├─builtin
│  ├─bytes
│  ├─cmd
│  │  ├─addr2line
│  │  ├─api
│  │  │  └─testdata
│  │  │      └─src
│  │  │          ├─issue21181
│  │  │          │  ├─dep
│  │  │          │  ├─indirect
│  │  │          │  └─p
│  │  │          ├─issue29837
│  │  │          │  └─p
│  │  │          └─pkg
│  │  │              ├─p1
│  │  │              ├─p2
│  │  │              ├─p3
│  │  │              └─p4
│  │  ├─asm
│  │  │  └─internal
│  │  │      ├─arch
│  │  │      ├─asm
│  │  │      │  └─testdata
│  │  │      │      └─avx512enc
│  │  │      ├─flags
│  │  │      └─lex
│  │  ├─buildid
│  │  ├─cgo
│  │  ├─compile
│  │  │  └─internal
│  │  │      ├─abi
│  │  │      ├─abt
│  │  │      ├─amd64
│  │  │      ├─arm
│  │  │      ├─arm64
│  │  │      ├─base
│  │  │      ├─bitvec
│  │  │      ├─compare
│  │  │      ├─coverage
│  │  │      ├─deadcode
│  │  │      ├─devirtualize
│  │  │      ├─dwarfgen
│  │  │      ├─escape
│  │  │      ├─gc
│  │  │      ├─importer
│  │  │      │  └─testdata
│  │  │      │      └─versions
│  │  │      ├─inline
│  │  │      ├─ir
│  │  │      ├─liveness
│  │  │      ├─logopt
│  │  │      ├─loong64
│  │  │      ├─mips
│  │  │      ├─mips64
│  │  │      ├─noder
│  │  │      ├─objw
│  │  │      ├─pgo
│  │  │      ├─pkginit
│  │  │      ├─ppc64
│  │  │      ├─reflectdata
│  │  │      ├─riscv64
│  │  │      ├─s390x
│  │  │      ├─ssa
│  │  │      │  ├─testdata
│  │  │      │  └─_gen
│  │  │      ├─ssagen
│  │  │      ├─staticdata
│  │  │      ├─staticinit
│  │  │      ├─syntax
│  │  │      │  └─testdata
│  │  │      ├─test
│  │  │      │  └─testdata
│  │  │      │      ├─gen
│  │  │      │      ├─mysort
│  │  │      │      ├─pgo
│  │  │      │      │  └─inline
│  │  │      │      └─reproducible
│  │  │      ├─typebits
│  │  │      ├─typecheck
│  │  │      │  └─_builtin
│  │  │      ├─types
│  │  │      ├─types2
│  │  │      │  └─testdata
│  │  │      │      └─local
│  │  │      ├─walk
│  │  │      ├─wasm
│  │  │      └─x86
│  │  ├─covdata
│  │  │  └─testdata
│  │  ├─cover
│  │  │  └─testdata
│  │  │      ├─html
│  │  │      └─pkgcfg
│  │  │          ├─a
│  │  │          ├─b
│  │  │          └─main
│  │  ├─dist
│  │  ├─doc
│  │  │  └─testdata
│  │  │      ├─merge
│  │  │      └─nested
│  │  │          ├─empty
│  │  │          └─nested
│  │  ├─fix
│  │  ├─go
│  │  │  ├─internal
│  │  │  │  ├─auth
│  │  │  │  ├─base
│  │  │  │  ├─bug
│  │  │  │  ├─cache
│  │  │  │  ├─cfg
│  │  │  │  ├─clean
│  │  │  │  ├─cmdflag
│  │  │  │  ├─doc
│  │  │  │  ├─envcmd
│  │  │  │  ├─fix
│  │  │  │  ├─fmtcmd
│  │  │  │  ├─fsys
│  │  │  │  ├─generate
│  │  │  │  ├─get
│  │  │  │  ├─help
│  │  │  │  ├─imports
│  │  │  │  │  └─testdata
│  │  │  │  │      ├─android
│  │  │  │  │      ├─illumos
│  │  │  │  │      └─star
│  │  │  │  ├─list
│  │  │  │  ├─load
│  │  │  │  ├─lockedfile
│  │  │  │  │  └─internal
│  │  │  │  │      └─filelock
│  │  │  │  ├─mmap
│  │  │  │  ├─modcmd
│  │  │  │  ├─modconv
│  │  │  │  │  └─testdata
│  │  │  │  ├─modfetch
│  │  │  │  │  ├─codehost
│  │  │  │  │  └─zip_sum_test
│  │  │  │  │      └─testdata
│  │  │  │  ├─modget
│  │  │  │  ├─modindex
│  │  │  │  │  └─testdata
│  │  │  │  │      └─ignore_non_source
│  │  │  │  ├─modinfo
│  │  │  │  ├─modload
│  │  │  │  ├─mvs
│  │  │  │  ├─par
│  │  │  │  ├─robustio
│  │  │  │  ├─run
│  │  │  │  ├─script
│  │  │  │  │  └─scripttest
│  │  │  │  ├─search
│  │  │  │  ├─str
│  │  │  │  ├─test
│  │  │  │  │  └─internal
│  │  │  │  │      └─genflags
│  │  │  │  ├─tool
│  │  │  │  ├─trace
│  │  │  │  ├─vcs
│  │  │  │  ├─vcweb
│  │  │  │  │  └─vcstest
│  │  │  │  ├─version
│  │  │  │  ├─vet
│  │  │  │  ├─web
│  │  │  │  ├─work
│  │  │  │  └─workcmd
│  │  │  └─testdata
│  │  │      ├─failssh
│  │  │      ├─mod
│  │  │      ├─script
│  │  │      └─vcstest
│  │  │          ├─auth
│  │  │          ├─bzr
│  │  │          ├─fossil
│  │  │          ├─git
│  │  │          ├─go
│  │  │          │  └─mod
│  │  │          ├─hg
│  │  │          └─svn
│  │  ├─gofmt
│  │  │  └─testdata
│  │  ├─internal
│  │  │  ├─archive
│  │  │  │  └─testdata
│  │  │  │      └─mycgo
│  │  │  ├─bio
│  │  │  ├─browser
│  │  │  ├─buildid
│  │  │  │  └─testdata
│  │  │  ├─codesign
│  │  │  ├─cov
│  │  │  │  └─testdata
│  │  │  ├─dwarf
│  │  │  ├─edit
│  │  │  ├─gcprog
│  │  │  ├─goobj
│  │  │  ├─metadata
│  │  │  ├─moddeps
│  │  │  ├─notsha256
│  │  │  ├─obj
│  │  │  │  ├─arm
│  │  │  │  ├─arm64
│  │  │  │  ├─loong64
│  │  │  │  ├─mips
│  │  │  │  ├─ppc64
│  │  │  │  ├─riscv
│  │  │  │  │  └─testdata
│  │  │  │  │      └─testbranch
│  │  │  │  ├─s390x
│  │  │  │  ├─wasm
│  │  │  │  └─x86
│  │  │  ├─objabi
│  │  │  ├─objfile
│  │  │  ├─osinfo
│  │  │  ├─pkgpath
│  │  │  ├─pkgpattern
│  │  │  ├─quoted
│  │  │  ├─src
│  │  │  ├─sys
│  │  │  ├─test2json
│  │  │  │  └─testdata
│  │  │  └─traceviewer
│  │  ├─link
│  │  │  ├─internal
│  │  │  │  ├─amd64
│  │  │  │  ├─arm
│  │  │  │  ├─arm64
│  │  │  │  ├─benchmark
│  │  │  │  ├─dwtest
│  │  │  │  ├─ld
│  │  │  │  │  └─testdata
│  │  │  │  │      ├─deadcode
│  │  │  │  │      ├─httptest
│  │  │  │  │      │  └─main
│  │  │  │  │      ├─issue10978
│  │  │  │  │      ├─issue25459
│  │  │  │  │      │  ├─a
│  │  │  │  │      │  └─main
│  │  │  │  │      ├─issue26237
│  │  │  │  │      │  ├─b.dir
│  │  │  │  │      │  └─main
│  │  │  │  │      ├─issue32233
│  │  │  │  │      │  ├─lib
│  │  │  │  │      │  └─main
│  │  │  │  │      ├─issue38192
│  │  │  │  │      ├─issue39256
│  │  │  │  │      ├─issue39757
│  │  │  │  │      ├─issue42484
│  │  │  │  │      └─stackcheck
│  │  │  │  ├─loadelf
│  │  │  │  ├─loader
│  │  │  │  ├─loadmacho
│  │  │  │  ├─loadpe
│  │  │  │  ├─loadxcoff
│  │  │  │  ├─loong64
│  │  │  │  ├─mips
│  │  │  │  ├─mips64
│  │  │  │  ├─ppc64
│  │  │  │  ├─riscv64
│  │  │  │  ├─s390x
│  │  │  │  ├─sym
│  │  │  │  ├─wasm
│  │  │  │  └─x86
│  │  │  └─testdata
│  │  │      ├─pe-binutils
│  │  │      ├─pe-llvm
│  │  │      ├─testBuildFortvOS
│  │  │      ├─testHashedSyms
│  │  │      ├─testIndexMismatch
│  │  │      └─testRO
│  │  ├─nm
│  │  ├─objdump
│  │  │  └─testdata
│  │  │      └─testfilenum
│  │  ├─pack
│  │  ├─pprof
│  │  │  └─testdata
│  │  ├─test2json
│  │  ├─trace
│  │  │  └─static
│  │  ├─vendor
│  │  │  ├─github.com
│  │  │  │  ├─google
│  │  │  │  │  └─pprof
│  │  │  │  │      ├─driver
│  │  │  │  │      ├─internal
│  │  │  │  │      │  ├─binutils
│  │  │  │  │      │  ├─driver
│  │  │  │  │      │  │  └─html
│  │  │  │  │      │  ├─elfexec
│  │  │  │  │      │  ├─graph
│  │  │  │  │      │  ├─measurement
│  │  │  │  │      │  ├─plugin
│  │  │  │  │      │  ├─report
│  │  │  │  │      │  ├─symbolizer
│  │  │  │  │      │  ├─symbolz
│  │  │  │  │      │  └─transport
│  │  │  │  │      ├─profile
│  │  │  │  │      └─third_party
│  │  │  │  │          ├─d3flamegraph
│  │  │  │  │          └─svgpan
│  │  │  │  └─ianlancetaylor
│  │  │  │      └─demangle
│  │  │  └─golang.org
│  │  │      └─x
│  │  │          ├─arch
│  │  │          │  ├─arm
│  │  │          │  │  └─armasm
│  │  │          │  ├─arm64
│  │  │          │  │  └─arm64asm
│  │  │          │  ├─ppc64
│  │  │          │  │  └─ppc64asm
│  │  │          │  └─x86
│  │  │          │      └─x86asm
│  │  │          ├─mod
│  │  │          │  ├─internal
│  │  │          │  │  └─lazyregexp
│  │  │          │  ├─modfile
│  │  │          │  ├─module
│  │  │          │  ├─semver
│  │  │          │  ├─sumdb
│  │  │          │  │  ├─dirhash
│  │  │          │  │  ├─note
│  │  │          │  │  └─tlog
│  │  │          │  └─zip
│  │  │          ├─sync
│  │  │          │  └─semaphore
│  │  │          ├─sys
│  │  │          │  ├─internal
│  │  │          │  │  └─unsafeheader
│  │  │          │  ├─plan9
│  │  │          │  ├─unix
│  │  │          │  └─windows
│  │  │          ├─term
│  │  │          └─tools
│  │  │              ├─cover
│  │  │              ├─go
│  │  │              │  ├─analysis
│  │  │              │  │  ├─internal
│  │  │              │  │  │  └─analysisflags
│  │  │              │  │  ├─passes
│  │  │              │  │  │  ├─asmdecl
│  │  │              │  │  │  ├─assign
│  │  │              │  │  │  ├─atomic
│  │  │              │  │  │  ├─bools
│  │  │              │  │  │  ├─buildtag
│  │  │              │  │  │  ├─cgocall
│  │  │              │  │  │  ├─composite
│  │  │              │  │  │  ├─copylock
│  │  │              │  │  │  ├─ctrlflow
│  │  │              │  │  │  ├─errorsas
│  │  │              │  │  │  ├─framepointer
│  │  │              │  │  │  ├─httpresponse
│  │  │              │  │  │  ├─ifaceassert
│  │  │              │  │  │  ├─inspect
│  │  │              │  │  │  ├─internal
│  │  │              │  │  │  │  └─analysisutil
│  │  │              │  │  │  ├─loopclosure
│  │  │              │  │  │  ├─lostcancel
│  │  │              │  │  │  ├─nilfunc
│  │  │              │  │  │  ├─printf
│  │  │              │  │  │  ├─shift
│  │  │              │  │  │  ├─sigchanyzer
│  │  │              │  │  │  ├─stdmethods
│  │  │              │  │  │  ├─stringintconv
│  │  │              │  │  │  ├─structtag
│  │  │              │  │  │  ├─testinggoroutine
│  │  │              │  │  │  ├─tests
│  │  │              │  │  │  ├─timeformat
│  │  │              │  │  │  ├─unmarshal
│  │  │              │  │  │  ├─unreachable
│  │  │              │  │  │  ├─unsafeptr
│  │  │              │  │  │  └─unusedresult
│  │  │              │  │  └─unitchecker
│  │  │              │  ├─ast
│  │  │              │  │  ├─astutil
│  │  │              │  │  └─inspector
│  │  │              │  ├─cfg
│  │  │              │  └─types
│  │  │              │      ├─objectpath
│  │  │              │      └─typeutil
│  │  │              └─internal
│  │  │                  ├─analysisinternal
│  │  │                  ├─facts
│  │  │                  └─typeparams
│  │  └─vet
│  │      └─testdata
│  │          ├─asm
│  │          ├─assign
│  │          ├─atomic
│  │          ├─bool
│  │          ├─buildtag
│  │          ├─cgo
│  │          ├─composite
│  │          ├─copylock
│  │          ├─deadcode
│  │          ├─httpresponse
│  │          ├─lostcancel
│  │          ├─method
│  │          ├─nilfunc
│  │          ├─print
│  │          ├─rangeloop
│  │          ├─shift
│  │          ├─structtag
│  │          ├─tagtest
│  │          ├─testingpkg
│  │          ├─unmarshal
│  │          ├─unsafeptr
│  │          └─unused
│  ├─compress
│  │  ├─bzip2
│  │  │  └─testdata
│  │  ├─flate
│  │  │  └─testdata
│  │  ├─gzip
│  │  │  └─testdata
│  │  ├─lzw
│  │  ├─testdata
│  │  └─zlib
│  ├─container
│  │  ├─heap
│  │  ├─list
│  │  └─ring
│  ├─context
│  ├─crypto
│  │  ├─aes
│  │  ├─boring
│  │  ├─cipher
│  │  ├─des
│  │  ├─dsa
│  │  ├─ecdh
│  │  ├─ecdsa
│  │  │  └─testdata
│  │  ├─ed25519
│  │  │  └─testdata
│  │  ├─elliptic
│  │  ├─hmac
│  │  ├─internal
│  │  │  ├─alias
│  │  │  ├─bigmod
│  │  │  │  └─_asm
│  │  │  ├─boring
│  │  │  │  ├─bbig
│  │  │  │  ├─bcache
│  │  │  │  ├─fipstls
│  │  │  │  ├─sig
│  │  │  │  └─syso
│  │  │  ├─edwards25519
│  │  │  │  └─field
│  │  │  │      └─_asm
│  │  │  ├─nistec
│  │  │  │  └─fiat
│  │  │  └─randutil
│  │  ├─md5
│  │  ├─rand
│  │  ├─rc4
│  │  ├─rsa
│  │  │  └─testdata
│  │  ├─sha1
│  │  ├─sha256
│  │  ├─sha512
│  │  ├─subtle
│  │  ├─tls
│  │  │  ├─fipsonly
│  │  │  └─testdata
│  │  └─x509
│  │      ├─internal
│  │      │  └─macos
│  │      ├─pkix
│  │      └─testdata
│  ├─database
│  │  └─sql
│  │      └─driver
│  ├─debug
│  │  ├─buildinfo
│  │  ├─dwarf
│  │  │  └─testdata
│  │  ├─elf
│  │  │  └─testdata
│  │  ├─gosym
│  │  │  └─testdata
│  │  ├─macho
│  │  │  └─testdata
│  │  ├─pe
│  │  │  └─testdata
│  │  └─plan9obj
│  │      └─testdata
│  ├─embed
│  │  └─internal
│  │      └─embedtest
│  │          └─testdata
│  │              ├─-not-hidden
│  │              ├─.hidden
│  │              │  ├─.more
│  │              │  ├─more
│  │              │  └─_more
│  │              ├─i
│  │              │  └─j
│  │              │      └─k
│  │              └─_hidden
│  ├─encoding
│  │  ├─ascii85
│  │  ├─asn1
│  │  ├─base32
│  │  ├─base64
│  │  ├─binary
│  │  ├─csv
│  │  ├─gob
│  │  ├─hex
│  │  ├─json
│  │  │  └─testdata
│  │  ├─pem
│  │  └─xml
│  ├─errors
│  ├─expvar
│  ├─flag
│  ├─fmt
│  ├─go
│  │  ├─ast
│  │  ├─build
│  │  │  ├─constraint
│  │  │  └─testdata
│  │  │      ├─alltags
│  │  │      ├─bads
│  │  │      ├─cgo_disabled
│  │  │      ├─doc
│  │  │      ├─empty
│  │  │      ├─multi
│  │  │      ├─non_source_tags
│  │  │      ├─other
│  │  │      │  └─file
│  │  │      └─withvendor
│  │  │          └─src
│  │  │              └─a
│  │  │                  ├─b
│  │  │                  └─vendor
│  │  │                      └─c
│  │  │                          └─d
│  │  ├─constant
│  │  ├─doc
│  │  │  ├─comment
│  │  │  │  └─testdata
│  │  │  └─testdata
│  │  │      ├─examples
│  │  │      └─pkgdoc
│  │  ├─format
│  │  ├─importer
│  │  ├─internal
│  │  │  ├─gccgoimporter
│  │  │  │  └─testdata
│  │  │  ├─gcimporter
│  │  │  │  └─testdata
│  │  │  │      └─versions
│  │  │  ├─srcimporter
│  │  │  │  └─testdata
│  │  │  │      ├─issue20855
│  │  │  │      ├─issue23092
│  │  │  │      └─issue24392
│  │  │  └─typeparams
│  │  ├─parser
│  │  │  └─testdata
│  │  │      ├─issue42951
│  │  │      │  └─not_a_file.go
│  │  │      └─resolution
│  │  ├─printer
│  │  │  └─testdata
│  │  ├─scanner
│  │  ├─token
│  │  └─types
│  │      └─testdata
│  │          └─local
│  ├─hash
│  │  ├─adler32
│  │  ├─crc32
│  │  ├─crc64
│  │  ├─fnv
│  │  └─maphash
│  ├─html
│  │  └─template
│  │      └─testdata
│  ├─image
│  │  ├─color
│  │  │  └─palette
│  │  ├─draw
│  │  ├─gif
│  │  ├─internal
│  │  │  └─imageutil
│  │  ├─jpeg
│  │  ├─png
│  │  │  └─testdata
│  │  │      └─pngsuite
│  │  └─testdata
│  ├─index
│  │  └─suffixarray
│  ├─internal
│  │  ├─abi
│  │  │  └─testdata
│  │  ├─buildcfg
│  │  ├─bytealg
│  │  ├─cfg
│  │  ├─coverage
│  │  │  ├─calloc
│  │  │  ├─cformat
│  │  │  ├─cmerge
│  │  │  ├─decodecounter
│  │  │  ├─decodemeta
│  │  │  ├─encodecounter
│  │  │  ├─encodemeta
│  │  │  ├─pods
│  │  │  ├─rtcov
│  │  │  ├─slicereader
│  │  │  ├─slicewriter
│  │  │  ├─stringtab
│  │  │  ├─test
│  │  │  └─uleb128
│  │  ├─cpu
│  │  ├─dag
│  │  ├─diff
│  │  │  └─testdata
│  │  ├─fmtsort
│  │  ├─fuzz
│  │  ├─goarch
│  │  ├─godebug
│  │  ├─goexperiment
│  │  ├─goos
│  │  ├─goroot
│  │  ├─goversion
│  │  ├─intern
│  │  ├─itoa
│  │  ├─lazyregexp
│  │  ├─lazytemplate
│  │  ├─nettrace
│  │  ├─obscuretestdata
│  │  ├─oserror
│  │  ├─pkgbits
│  │  ├─platform
│  │  ├─poll
│  │  ├─profile
│  │  ├─race
│  │  ├─reflectlite
│  │  ├─safefilepath
│  │  ├─saferio
│  │  ├─singleflight
│  │  ├─syscall
│  │  │  ├─execenv
│  │  │  ├─unix
│  │  │  └─windows
│  │  │      ├─registry
│  │  │      └─sysdll
│  │  ├─sysinfo
│  │  ├─testenv
│  │  ├─testlog
│  │  ├─testpty
│  │  ├─trace
│  │  │  └─testdata
│  │  ├─txtar
│  │  ├─types
│  │  │  ├─errors
│  │  │  └─testdata
│  │  │      ├─check
│  │  │      │  ├─decls2
│  │  │      │  ├─importdecl0
│  │  │      │  ├─importdecl1
│  │  │      │  └─issue25008
│  │  │      ├─examples
│  │  │      ├─fixedbugs
│  │  │      └─spec
│  │  ├─unsafeheader
│  │  └─xcoff
│  │      └─testdata
│  ├─io
│  │  ├─fs
│  │  └─ioutil
│  │      └─testdata
│  ├─log
│  │  └─syslog
│  ├─math
│  │  ├─big
│  │  ├─bits
│  │  ├─cmplx
│  │  └─rand
│  ├─mime
│  │  ├─multipart
│  │  │  └─testdata
│  │  ├─quotedprintable
│  │  └─testdata
│  ├─net
│  │  ├─http
│  │  │  ├─cgi
│  │  │  │  └─testdata
│  │  │  ├─cookiejar
│  │  │  ├─fcgi
│  │  │  ├─httptest
│  │  │  ├─httptrace
│  │  │  ├─httputil
│  │  │  ├─internal
│  │  │  │  ├─ascii
│  │  │  │  └─testcert
│  │  │  ├─pprof
│  │  │  └─testdata
│  │  ├─internal
│  │  │  └─socktest
│  │  ├─mail
│  │  ├─netip
│  │  ├─rpc
│  │  │  └─jsonrpc
│  │  ├─smtp
│  │  ├─testdata
│  │  ├─textproto
│  │  └─url
│  ├─os
│  │  ├─exec
│  │  │  └─internal
│  │  │      └─fdtest
│  │  ├─signal
│  │  ├─testdata
│  │  │  ├─dirfs
│  │  │  │  └─dir
│  │  │  └─issue37161
│  │  └─user
│  ├─path
│  │  └─filepath
│  ├─plugin
│  ├─reflect
│  │  └─internal
│  │      ├─example1
│  │      └─example2
│  ├─regexp
│  │  ├─syntax
│  │  └─testdata
│  ├─runtime
│  │  ├─asan
│  │  ├─cgo
│  │  ├─coverage
│  │  │  └─testdata
│  │  │      └─issue56006
│  │  ├─debug
│  │  ├─internal
│  │  │  ├─atomic
│  │  │  ├─math
│  │  │  ├─startlinetest
│  │  │  ├─sys
│  │  │  └─syscall
│  │  ├─metrics
│  │  ├─msan
│  │  ├─pprof
│  │  │  └─testdata
│  │  │      └─mappingtest
│  │  ├─race
│  │  │  ├─internal
│  │  │  │  ├─amd64v1
│  │  │  │  └─amd64v3
│  │  │  └─testdata
│  │  ├─testdata
│  │  │  ├─testexithooks
│  │  │  ├─testfaketime
│  │  │  ├─testprog
│  │  │  ├─testprogcgo
│  │  │  │  └─windows
│  │  │  ├─testprognet
│  │  │  ├─testwinlib
│  │  │  ├─testwinlibsignal
│  │  │  ├─testwinlibthrow
│  │  │  └─testwinsignal
│  │  └─trace
│  ├─sort
│  ├─strconv
│  │  └─testdata
│  ├─strings
│  ├─sync
│  │  └─atomic
│  ├─syscall
│  │  └─js
│  ├─testdata
│  ├─testing
│  │  ├─fstest
│  │  ├─internal
│  │  │  └─testdeps
│  │  ├─iotest
│  │  └─quick
│  ├─text
│  │  ├─scanner
│  │  ├─tabwriter
│  │  └─template
│  │      ├─parse
│  │      └─testdata
│  ├─time
│  │  ├─testdata
│  │  └─tzdata
│  ├─unicode
│  │  ├─utf16
│  │  └─utf8
│  ├─unsafe
│  └─vendor
│      └─golang.org
│          └─x
│              ├─crypto
│              │  ├─chacha20
│              │  ├─chacha20poly1305
│              │  ├─cryptobyte
│              │  │  └─asn1
│              │  ├─hkdf
│              │  └─internal
│              │      ├─alias
│              │      └─poly1305
│              ├─net
│              │  ├─dns
│              │  │  └─dnsmessage
│              │  ├─http
│              │  │  ├─httpguts
│              │  │  └─httpproxy
│              │  ├─http2
│              │  │  └─hpack
│              │  ├─idna
│              │  ├─lif
│              │  ├─nettest
│              │  └─route
│              ├─sys
│              │  └─cpu
│              └─text
│                  ├─secure
│                  │  └─bidirule
│                  ├─transform
│                  └─unicode
│                      ├─bidi
│                      └─norm
└─test
    ├─abi
    ├─alias3.dir
    ├─asmhdr.dir
    ├─bench
    │  ├─garbage
    │  └─go1
    ├─chan
    ├─closure3.dir
    ├─closure5.dir
    ├─codegen
    ├─ddd2.dir
    ├─dwarf
    │  └─dwarf.dir
    ├─fixedbugs
    │  ├─bug083.dir
    │  ├─bug088.dir
    │  ├─bug106.dir
    │  ├─bug133.dir
    │  ├─bug160.dir
    │  ├─bug191.dir
    │  ├─bug222.dir
    │  ├─bug248.dir
    │  ├─bug282.dir
    │  ├─bug306.dir
    │  ├─bug313.dir
    │  ├─bug322.dir
    │  ├─bug324.dir
    │  ├─bug335.dir
    │  ├─bug345.dir
    │  ├─bug367.dir
    │  ├─bug369.dir
    │  ├─bug377.dir
    │  ├─bug382.dir
    │  ├─bug392.dir
    │  ├─bug396.dir
    │  ├─bug404.dir
    │  ├─bug407.dir
    │  ├─bug414.dir
    │  ├─bug415.dir
    │  ├─bug424.dir
    │  ├─bug437.dir
    │  ├─bug448.dir
    │  ├─bug460.dir
    │  ├─bug465.dir
    │  ├─bug466.dir
    │  ├─bug467.dir
    │  ├─bug468.dir
    │  ├─bug472.dir
    │  ├─bug478.dir
    │  ├─bug479.dir
    │  ├─bug480.dir
    │  ├─bug488.dir
    │  ├─bug492.dir
    │  ├─bug504.dir
    │  ├─bug506.dir
    │  ├─bug507.dir
    │  ├─bug510.dir
    │  ├─bug511.dir
    │  ├─gcc67968.dir
    │  ├─issue10066.dir
    │  ├─issue10219.dir
    │  ├─issue10700.dir
    │  ├─issue11053.dir
    │  ├─issue11656.dir
    │  ├─issue12677.dir
    │  ├─issue13777.dir
    │  ├─issue14164.dir
    │  ├─issue14331.dir
    │  ├─issue15071.dir
    │  ├─issue15470.dir
    │  ├─issue15514.dir
    │  ├─issue15548.dir
    │  ├─issue15572.dir
    │  ├─issue15609.dir
    │  ├─issue15646.dir
    │  ├─issue15838.dir
    │  ├─issue15920.dir
    │  ├─issue16133.dir
    │  ├─issue16317.dir
    │  ├─issue16616.dir
    │  ├─issue18419.dir
    │  ├─issue18895.dir
    │  ├─issue18911.dir
    │  ├─issue19028.dir
    │  ├─issue19261.dir
    │  ├─issue19467.dir
    │  ├─issue19507.dir
    │  ├─issue19548.dir
    │  ├─issue19699.dir
    │  ├─issue19764.dir
    │  ├─issue20014.dir
    │  │  └─a
    │  ├─issue20682.dir
    │  ├─issue21120.dir
    │  ├─issue22877.dir
    │  ├─issue22941.dir
    │  ├─issue22962.dir
    │  ├─issue23179.dir
    │  ├─issue23311.dir
    │  ├─issue24693.dir
    │  ├─issue24761.dir
    │  ├─issue24801.dir
    │  ├─issue25055.dir
    │  ├─issue25984.dir
    │  ├─issue26341.dir
    │  ├─issue27836.dir
    │  ├─issue29610.dir
    │  ├─issue29612.dir
    │  │  ├─p1
    │  │  │  └─ssa
    │  │  └─p2
    │  │      └─ssa
    │  ├─issue29919.dir
    │  ├─issue30659.dir
    │  ├─issue30862.dir
    │  │  ├─a
    │  │  └─b
    │  ├─issue30907.dir
    │  ├─issue30908.dir
    │  ├─issue31053.dir
    │  ├─issue31252.dir
    │  ├─issue31636.dir
    │  ├─issue31637.dir
    │  ├─issue31959.dir
    │  ├─issue32595.dir
    │  ├─issue32778.dir
    │  ├─issue32901.dir
    │  ├─issue32922.dir
    │  ├─issue33013.dir
    │  ├─issue33020.dir
    │  ├─issue33020a.dir
    │  ├─issue33158.dir
    │  ├─issue33219.dir
    │  ├─issue33739.dir
    │  ├─issue33866.dir
    │  ├─issue34503.dir
    │  ├─issue34577.dir
    │  ├─issue3552.dir
    │  ├─issue35586.dir
    │  ├─issue35739.dir
    │  ├─issue36085.dir
    │  ├─issue37513.dir
    │  ├─issue37837.dir
    │  ├─issue40252.dir
    │  ├─issue42284.dir
    │  ├─issue42401.dir
    │  ├─issue4252.dir
    │  ├─issue43164.dir
    │  ├─issue4326.dir
    │  ├─issue43479.dir
    │  ├─issue43551.dir
    │  ├─issue43633.dir
    │  ├─issue4370.dir
    │  ├─issue43962.dir
    │  ├─issue44325.dir
    │  ├─issue44330.dir
    │  ├─issue44335.dir
    │  ├─issue44355.dir
    │  ├─issue44370.dir
    │  ├─issue44732.dir
    │  │  ├─bar
    │  │  └─foo
    │  ├─issue4510.dir
    │  ├─issue45503.dir
    │  ├─issue4590.dir
    │  ├─issue46653.dir
    │  │  └─bad
    │  ├─issue47068.dir
    │  ├─issue47087.dir
    │  ├─issue47131.dir
    │  ├─issue47185.dir
    │  │  └─bad
    │  ├─issue47201.dir
    │  ├─issue47317.dir
    │  ├─issue48088.dir
    │  ├─issue4879.dir
    │  ├─issue49016.dir
    │  ├─issue49094.dir
    │  ├─issue49143.dir
    │  ├─issue4932.dir
    │  ├─issue4964.dir
    │  ├─issue50788.dir
    │  ├─issue5105.dir
    │  ├─issue5125.dir
    │  ├─issue51291.dir
    │  ├─issue52128.dir
    │  ├─issue52279.dir
    │  ├─issue5259.dir
    │  ├─issue52590.dir
    │  ├─issue5260.dir
    │  ├─issue52856.dir
    │  ├─issue52862.dir
    │  ├─issue5291.dir
    │  ├─issue5470.dir
    │  ├─issue54912.dir
    │  ├─issue5614.dir
    │  ├─issue56280.dir
    │  ├─issue56778.dir
    │  ├─issue5755.dir
    │  ├─issue58563.dir
    │  ├─issue5910.dir
    │  ├─issue5957.dir
    │  ├─issue6295.dir
    │  ├─issue6513.dir
    │  ├─issue6789.dir
    │  ├─issue7023.dir
    │  ├─issue7648.dir
    │  ├─issue7995b.dir
    │  ├─issue8060.dir
    │  ├─issue8280.dir
    │  ├─issue9355.dir
    │  ├─issue9537.dir
    │  └─issue9608.dir
    ├─import2.dir
    ├─import4.dir
    ├─interface
    │  ├─embed1.dir
    │  ├─embed3.dir
    │  ├─private.dir
    │  └─recursive1.dir
    ├─intrinsic.dir
    ├─ken
    ├─linkname.dir
    ├─method4.dir
    ├─retjmp.dir
    ├─runtime
    ├─stress
    ├─syntax
    ├─typeparam
    │  ├─absdiffimp.dir
    │  ├─absdiffimp2.dir
    │  ├─aliasimp.dir
    │  ├─chansimp.dir
    │  ├─dedup.dir
    │  ├─factimp.dir
    │  ├─gencrawler.dir
    │  ├─geninline.dir
    │  ├─issue46461b.dir
    │  ├─issue47514c.dir
    │  ├─issue47775.dir
    │  ├─issue47892.dir
    │  ├─issue47892b.dir
    │  ├─issue48094.dir
    │  ├─issue48094b.dir
    │  ├─issue48185a.dir
    │  ├─issue48185b.dir
    │  ├─issue48280.dir
    │  ├─issue48306.dir
    │  ├─issue48337a.dir
    │  ├─issue48337b.dir
    │  ├─issue48454.dir
    │  ├─issue48462.dir
    │  ├─issue48716.dir
    │  ├─issue48962.dir
    │  ├─issue49027.dir
    │  ├─issue49241.dir
    │  ├─issue49246.dir
    │  ├─issue49497.dir
    │  ├─issue49524.dir
    │  ├─issue49536.dir
    │  ├─issue49659.dir
    │  ├─issue49667.dir
    │  ├─issue49893.dir
    │  ├─issue50121.dir
    │  ├─issue50121b.dir
    │  ├─issue50437.dir
    │  ├─issue50481b.dir
    │  ├─issue50481c.dir
    │  ├─issue50485.dir
    │  ├─issue50486.dir
    │  ├─issue50552.dir
    │  ├─issue50561.dir
    │  ├─issue50598.dir
    │  ├─issue50841.dir
    │  ├─issue51219.dir
    │  ├─issue51219b.dir
    │  ├─issue51250a.dir
    │  ├─issue51367.dir
    │  ├─issue51423.dir
    │  ├─issue51836.dir
    │  ├─issue52117.dir
    │  ├─issue54302.dir
    │  ├─listimp.dir
    │  ├─listimp2.dir
    │  ├─mapimp.dir
    │  ├─mapsimp.dir
    │  ├─mdempsky
    │  │  ├─1.dir
    │  │  ├─10.dir
    │  │  ├─12.dir
    │  │  ├─3.dir
    │  │  ├─4.dir
    │  │  ├─7.dir
    │  │  └─8.dir
    │  ├─mincheck.dir
    │  ├─minimp.dir
    │  ├─mutualimp.dir
    │  ├─orderedmapsimp.dir
    │  ├─pairimp.dir
    │  ├─recoverimp.dir
    │  ├─select.dir
    │  ├─setsimp.dir
    │  ├─sliceimp.dir
    │  ├─stringerimp.dir
    │  ├─structinit.dir
    │  └─valimp.dir
    └─uintptrescapes.dir

Go 语言的源码复用建立在包(package)基础之上。包通过 package, import, GOPATH 操作完成。

Go语言使用包(package)来组织源码,包是源码复用的基础。与其他编程语言不同,Go语言的包具有代码可见性,包的使用通过packageimportGOPATH操作完成。

1. main

Go语言的入口函数main()所在的包叫做main包。如果main包想要使用其他代码,需要通过import导入。

2. 包

src目录中,我们以代码包的形式组织和保存Go源码文件。每个代码包与src目录下的文件夹一一对应,每个子目录都是一个代码包。

要注意的是,代码包的包名和文件目录名可以不一致,但同一个目录下的所有.go文件的第一行包定义必须一致。

一个目录下的同级文件属于同一个包,包名建议设为目录名,但也可以不同名。包名为main的包是应用程序的入口包,其他包不能使用它。

在同一个包下的文件属于同一个工程文件,无需导入包即可直接使用。

包可以进行嵌套定义,对应的是嵌套目录结构,但包名应与所在目录一致。

包中的标识符首字母大小写决定了其是否可以被导出,只有首字母大写的标识符可以被其他包导入和使用,视为公共资源。

3. 导入

要引用其他包,可以使用import关键字,可以单个导入或批量导入。

A. 通常导入

// 单个导入
import "package"

// 批量导入
import (
  "package1"
  "package2"
)

B. 点操作

import (
  . "fmt"
)

点操作允许省略包名前缀,直接调用包的函数,例如fmt.Println("hello world")可以简写为Println("hello world")

C. 别名

可以为导入的包定义别名,使用时可以使用别名作为前缀调用包的函数。

import (
  p1 "package1"
  p2 "package2"
)

// 使用别名调用包函数
p1.Method()

D. _操作

使用_操作导入包时,只执行包的初始化操作,并不使用包内的其他函数、常量等资源,相当于匿名导入。

import (
  "database/sql"
  _ "github.com/ziutek/mymysql/godrv"
)

_操作将执行包中的init()函数,但不直接使用包。

导入包的路径可以是相对路径或绝对路径,推荐使用绝对路径。

4. GOPATH环境变量

import导入包时,Go会从GOROOTGOPATH环境变量指定的目录中的src/package检索导入的包。如果找不到包,则导入失败。

  • GOROOT是Go内置包的位置。
  • GOPATH是自定义包的位置。

通常在开发Go项目时,需要将GOPATH设置为项目目录,该目录下的src中的包可以被导入和使用。

5. init()包初始化

在Go语言中,init()main()是保留函数。我们可以在源码中定义init()函数,它会在包被导入时执行。如果在main函数中导入包,并且包中有init()函数,那么init()中的代码会在main()函数执行之前执行,用于初始化包所需的特定资源。

以下是包和主函数的源码示例:

// 包源码:src/userPackage/tool.go
package userPackage

import "fmt"

func init() {
  fmt.Println("tool init")
}

// 主函数源码:src/main.go
package main

import "userPackage"

func main() {
  fmt.Println("main run")
  // 使用userPackage
  userPackage.SomeFunc()
}

执行时,先输出tool init,然后输出main run

init()main()函数的区别如下:

相同点:

  • 两个函数在定义时不能有参数和返回值。
  • 函数只能由Go程序自动调用,不可引用。

不同点:

  • init()函数可以在任意包中定义,且可以定义多个。
  • main()函数只能在main包中定义,且只能定义一个。

两个函数的执行顺序:

  • main包中的Go文件总是会被执行。
  • 对于同一个Go文件,init()函数按照从上到下的顺序调用。
  • 对于同一个包中的不同文件,按文件名的字符串排序,然后依次调用各文件中的init()函数。
  • 对于不同的包,如果它们没有相互依赖关系,按照main包中import的顺序调用各包的init()函数。
  • 如果存在依赖关系,被依赖的包先初始化,例如:main导入A导入B导入C,初始化顺序为C->B->A->main

避免循环导入,例如:A导入B导入C导入A
100天精通Golang(基础入门篇)——第16天:深入解析Go语言包的使用和包管理_第1张图片

一个包可以被多个包导入,但只会初始化一次。

6. 管理外部包

Go允许导入不同代码库的代码。可以使用go get命令将要导入的外部包下载到GOPATH对应的目录中。

例如,我们想使用Go语言连接MySQL数据库,需要先下载MySQL的数据包。在终端中

运行以下命令:

$ go get github.com/go-sql-driver/mysql

安装完成后,可以在GOPATHsrc目录下看到对应的文件包目录。

100天精通Golang(基础入门篇)——第16天:深入解析Go语言包的使用和包管理_第2张图片

通过go install命令可以编译包文件。非main包在编译后会生成一个.a文件,用于后续可执行程序的链接使用。标准库中包对应的源码路径在$GOROOT/src下,而编译后的.a文件路径在$GOROOT/pkg/darwin_amd64下。

以上就是关于Go语言中包的使用的介绍。

7. 综合代码案例:

package main

import (
	"fmt"
	"userPackage"
)

func main() {
	fmt.Println("main run")
	userPackage.SomeFunc()
}

// 包源码:src/userPackage/tool.go
package userPackage

import "fmt"

func init() {
	fmt.Println("tool init")
}

func SomeFunc() {
	fmt.Println("This is a function from userPackage.")
}

在上述代码中,我们定义了main包作为程序的入口包。在main函数中,我们使用import导入了自定义的userPackage包,并调用了其中的SomeFunc函数。

userPackage包的源码文件tool.go中,我们定义了一个init函数,在包被导入时执行。同时,我们还定义了SomeFunc函数,用于在main函数中调用。

运行该程序,输出结果如下:

tool init
main run
This is a function from userPackage.

这个代码案例展示了包的使用和初始化过程,以及在main函数中导入和调用自定义包中的函数。

今日学习总结:

通过今天的学习,我们深入了解了Go语言中包的使用和管理。我们了解了包的定义和命名规则,以及包的可见性。通过import关键字,我们可以导入其他包,并通过别名和点操作来简化调用。我们还学习了包的初始化过程和init()函数的特殊作用。此外,我们介绍了GOPATH环境变量的重要性和外部包的管理方式。通过这些知识,我们可以更好地组织和管理自己的Go代码,提高开发效率。

在这里插入图片描述

结语

通过今天的学习,您已经踏上了Golang的学习之旅。在未来的日子里,您将探索Golang的各个方面,从基础概念到高级技巧,从实际应用到性能优化。
学习一门编程语言是一个持续的过程,每一天都是您向Golang的精通迈进的重要一步。我鼓励您坚持每天学习,保持热情和好奇心,解决挑战并享受成功的喜悦。

在您的学习旅程中,不要忘记参与社区和与其他Golang开发者交流。分享您的见解和经验,向他人学习,并在开源项目或实际应用中展示您的技能。

如果您在学习过程中遇到困难或有任何问题,不要犹豫向社区和专家寻求帮助。持续学习,勇敢探索,您将在Golang领域取得令人瞩目的成就。

最后,感谢您的阅读和支持!祝愿您在未来的每一天中都能够成为一名精通Golang的开发者!

期待听到您在学习过程中的进展和成就。如果您需要进一步的帮助,请随时告诉我。祝您在学习Golang的旅程中取得巨大成功!

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

如果您在学习过程中有任何疑惑,请点击下方名片,带您一对一快速入门 Go语言 的世界 ~

你可能感兴趣的:(golang,开发语言,后端,云原生,go,go1.19)