【我的架构师之路】- go源码分析笔记之源码目录
程序员文章站
2022-03-21 13:13:31
hello,大家好,是个多年,我的博客又开始要有动静了!之前真的是没时间和动力再写了!最近开始打算重新整理下 go的源码分析,所以download了go最新版源码(现在时间为: 2020.07.20) go.1.14.16 来进行源码全面剖析并整理成笔记,我们大家一起成长! 首先,按照惯例我们先来看看那go1.14.16的源码目录结构。├─api├─bin├─doc│ ├─articles│ │ └─wiki│ ├─codewalk│ ├─gopher│ │ └......
hello,大家好,时隔多年,我的博客又开始要有动静了!之前真的是没时间和动力再写了!最近开始打算重新整理下 go的源码分析,所以download了go最新版源码(现在时间为: 2020.07.20) go.1.14.16 来进行源码全面剖析并整理成笔记,我们大家一起成长!
首先,按照惯例我们先来看看那go1.14.16的源码目录结构。
├─api
├─bin
├─doc
│ ├─articles
│ │ └─wiki
│ ├─codewalk
│ ├─gopher
│ │ └─pencil
│ ├─play
│ └─progs
├─lib
│ └─time
├─misc
│ ├─android
│ ├─arm
│ ├─cgo
│ │ ├─errors
│ │ │ └─testdata
│ │ ├─fortran
│ │ │ └─helloworld
│ │ ├─gmp
│ │ ├─life
│ │ │ └─testdata
│ │ ├─nocgo
│ │ ├─stdio
│ │ │ └─testdata
│ │ │ └─stdio
│ │ ├─test
│ │ │ └─testdata
│ │ │ ├─gcc68255
│ │ │ ├─issue20266
│ │ │ ├─issue23555a
│ │ │ ├─issue23555b
│ │ │ ├─issue24161arg
│ │ │ ├─issue24161e0
│ │ │ ├─issue24161e1
│ │ │ ├─issue24161e2
│ │ │ ├─issue24161res
│ │ │ ├─issue26213
│ │ │ ├─issue26430
│ │ │ ├─issue26743
│ │ │ ├─issue27054
│ │ │ ├─issue27340
│ │ │ ├─issue29563
│ │ │ ├─issue30527
│ │ │ ├─issue8756
│ │ │ ├─issue8828
│ │ │ ├─issue9026
│ │ │ ├─issue9400
│ │ │ ├─issue9510a
│ │ │ └─issue9510b
│ │ ├─testasan
│ │ ├─testcarchive
│ │ │ └─testdata
│ │ │ ├─libgo
│ │ │ ├─libgo2
│ │ │ ├─libgo3
│ │ │ ├─libgo4
│ │ │ ├─libgo6
│ │ │ ├─libgo7
│ │ │ └─p
│ │ ├─testcshared
│ │ │ └─testdata
│ │ │ ├─go2c2go
│ │ │ │ ├─go
│ │ │ │ ├─m1
│ │ │ │ └─m2
│ │ │ ├─libgo
│ │ │ ├─libgo2
│ │ │ ├─libgo4
│ │ │ ├─libgo5
│ │ │ └─p
│ │ ├─testgodefs
│ │ │ └─testdata
│ │ ├─testplugin
│ │ │ ├─altpath
│ │ │ │ └─testdata
│ │ │ │ ├─common
│ │ │ │ └─plugin-mismatch
│ │ │ └─testdata
│ │ │ ├─checkdwarf
│ │ │ ├─common
│ │ │ ├─host
│ │ │ ├─iface
│ │ │ ├─iface_a
│ │ │ ├─iface_b
│ │ │ ├─iface_i
│ │ │ ├─issue18584
│ │ │ ├─issue18676
│ │ │ │ └─dynamodbstreamsevt
│ │ │ ├─issue19418
│ │ │ ├─issue19529
│ │ │ ├─issue19534
│ │ │ ├─issue22175
│ │ │ ├─issue22295.pkg
│ │ │ ├─issue24351
│ │ │ ├─issue25756
│ │ │ │ └─plugin
│ │ │ ├─plugin1
│ │ │ ├─plugin2
│ │ │ ├─sub
│ │ │ │ └─plugin1
│ │ │ ├─unnamed1
│ │ │ └─unnamed2
│ │ ├─testsanitizers
│ │ │ └─testdata
│ │ ├─testshared
│ │ │ └─testdata
│ │ │ ├─dep2
│ │ │ ├─dep3
│ │ │ ├─depBase
│ │ │ ├─division
│ │ │ ├─exe
│ │ │ ├─exe2
│ │ │ ├─exe3
│ │ │ ├─execgo
│ │ │ ├─explicit
│ │ │ ├─global
│ │ │ ├─globallib
│ │ │ ├─iface
│ │ │ ├─iface_a
│ │ │ ├─iface_b
│ │ │ ├─iface_i
│ │ │ ├─implicit
│ │ │ ├─implicitcmd
│ │ │ ├─issue25065
│ │ │ ├─issue30768
│ │ │ │ └─issue30768lib
│ │ │ └─trivial
│ │ ├─testsigfwd
│ │ ├─testso
│ │ │ └─testdata
│ │ ├─testsovar
│ │ │ └─testdata
│ │ └─testtls
│ ├─chrome
│ │ └─gophertool
│ ├─ios
│ ├─linkcheck
│ ├─reboot
│ ├─swig
│ │ ├─callback
│ │ └─stdio
│ ├─trace
│ └─wasm
├─pkg
│ ├─include
│ ├─tool
│ │ └─windows_amd64
│ ├─windows_amd64
│ │ ├─archive
│ │ ├─compress
│ │ ├─container
│ │ ├─crypto
│ │ │ ├─ed25519
│ │ │ │ └─internal
│ │ │ ├─internal
│ │ │ └─x509
│ │ ├─database
│ │ │ └─sql
│ │ ├─debug
│ │ ├─encoding
│ │ ├─go
│ │ │ └─internal
│ │ ├─hash
│ │ ├─html
│ │ ├─image
│ │ │ ├─color
│ │ │ └─internal
│ │ ├─index
│ │ ├─internal
│ │ │ └─syscall
│ │ │ └─windows
│ │ ├─io
│ │ ├─log
│ │ ├─math
│ │ ├─mime
│ │ ├─net
│ │ │ ├─http
│ │ │ ├─internal
│ │ │ └─rpc
│ │ ├─os
│ │ ├─path
│ │ ├─regexp
│ │ ├─runtime
│ │ │ ├─internal
│ │ │ └─pprof
│ │ │ └─internal
│ │ ├─sync
│ │ ├─testing
│ │ │ └─internal
│ │ ├─text
│ │ │ └─template
│ │ ├─unicode
│ │ └─vendor
│ │ └─golang.org
│ │ └─x
│ │ ├─crypto
│ │ │ ├─cryptobyte
│ │ │ └─internal
│ │ ├─net
│ │ │ ├─dns
│ │ │ ├─http
│ │ │ └─http2
│ │ ├─sys
│ │ └─text
│ │ ├─secure
│ │ └─unicode
│ └─windows_amd64_race
│ ├─archive
│ ├─compress
│ ├─container
│ ├─crypto
│ │ ├─ed25519
│ │ │ └─internal
│ │ ├─internal
│ │ └─x509
│ ├─database
│ │ └─sql
│ ├─debug
│ ├─encoding
│ ├─go
│ │ └─internal
│ ├─hash
│ ├─html
│ ├─image
│ │ ├─color
│ │ └─internal
│ ├─index
│ ├─internal
│ │ └─syscall
│ │ └─windows
│ ├─io
│ ├─log
│ ├─math
│ ├─mime
│ ├─net
│ │ ├─http
│ │ ├─internal
│ │ └─rpc
│ ├─os
│ ├─path
│ ├─regexp
│ ├─runtime
│ │ ├─internal
│ │ └─pprof
│ │ └─internal
│ ├─sync
│ ├─testing
│ │ └─internal
│ ├─text
│ │ └─template
│ ├─unicode
│ └─vendor
│ └─golang.org
│ └─x
│ ├─crypto
│ │ ├─cryptobyte
│ │ └─internal
│ ├─net
│ │ ├─dns
│ │ ├─http
│ │ └─http2
│ ├─sys
│ └─text
│ ├─secure
│ └─unicode
├─src
│ ├─archive
│ │ ├─tar
│ │ │ └─testdata
│ │ └─zip
│ │ └─testdata
│ ├─bufio
│ ├─builtin
│ ├─bytes
│ ├─cmd
│ │ ├─addr2line
│ │ ├─api
│ │ │ └─testdata
│ │ │ └─src
│ │ │ ├─issue21181
│ │ │ │ ├─dep
│ │ │ │ ├─indirect
│ │ │ │ └─p
│ │ │ ├─issue29837
│ │ │ │ └─p
│ │ │ └─pkg
│ │ │ ├─p1
│ │ │ ├─p2
│ │ │ └─p3
│ │ ├─asm
│ │ │ └─internal
│ │ │ ├─arch
│ │ │ ├─asm
│ │ │ │ └─testdata
│ │ │ │ └─avx512enc
│ │ │ ├─flags
│ │ │ └─lex
│ │ ├─buildid
│ │ ├─cgo
│ │ ├─compile
│ │ │ └─internal
│ │ │ ├─amd64
│ │ │ ├─arm
│ │ │ ├─arm64
│ │ │ ├─gc
│ │ │ │ ├─builtin
│ │ │ │ └─testdata
│ │ │ │ ├─gen
│ │ │ │ └─reproducible
│ │ │ ├─logopt
│ │ │ ├─mips
│ │ │ ├─mips64
│ │ │ ├─ppc64
│ │ │ ├─riscv64
│ │ │ ├─s390x
│ │ │ ├─ssa
│ │ │ │ ├─gen
│ │ │ │ └─testdata
│ │ │ ├─syntax
│ │ │ │ └─testdata
│ │ │ ├─test
│ │ │ ├─types
│ │ │ ├─wasm
│ │ │ └─x86
│ │ ├─cover
│ │ │ └─testdata
│ │ │ └─html
│ │ ├─dist
│ │ ├─doc
│ │ │ └─testdata
│ │ │ ├─merge
│ │ │ └─nested
│ │ │ ├─empty
│ │ │ └─nested
│ │ ├─fix
│ │ ├─go
│ │ │ ├─internal
│ │ │ │ ├─auth
│ │ │ │ ├─base
│ │ │ │ ├─bug
│ │ │ │ ├─cache
│ │ │ │ ├─cfg
│ │ │ │ ├─clean
│ │ │ │ ├─cmdflag
│ │ │ │ ├─doc
│ │ │ │ ├─envcmd
│ │ │ │ ├─fix
│ │ │ │ ├─fmtcmd
│ │ │ │ ├─generate
│ │ │ │ ├─get
│ │ │ │ ├─help
│ │ │ │ ├─imports
│ │ │ │ │ └─testdata
│ │ │ │ │ ├─android
│ │ │ │ │ ├─illumos
│ │ │ │ │ └─star
│ │ │ │ ├─list
│ │ │ │ ├─load
│ │ │ │ ├─lockedfile
│ │ │ │ │ └─internal
│ │ │ │ │ └─filelock
│ │ │ │ ├─modcmd
│ │ │ │ ├─modconv
│ │ │ │ │ └─testdata
│ │ │ │ ├─modfetch
│ │ │ │ │ ├─codehost
│ │ │ │ │ └─zip_sum_test
│ │ │ │ │ └─testdata
│ │ │ │ ├─modget
│ │ │ │ ├─modinfo
│ │ │ │ ├─modload
│ │ │ │ ├─mvs
│ │ │ │ ├─par
│ │ │ │ ├─renameio
│ │ │ │ ├─robustio
│ │ │ │ ├─run
│ │ │ │ ├─search
│ │ │ │ ├─str
│ │ │ │ ├─test
│ │ │ │ ├─tool
│ │ │ │ ├─txtar
│ │ │ │ ├─version
│ │ │ │ ├─vet
│ │ │ │ ├─web
│ │ │ │ └─work
│ │ │ └─testdata
│ │ │ ├─failssh
│ │ │ ├─generate
│ │ │ ├─mod
│ │ │ ├─modlegacy
│ │ │ │ └─src
│ │ │ │ ├─new
│ │ │ │ │ ├─p1
│ │ │ │ │ ├─p2
│ │ │ │ │ └─sub
│ │ │ │ │ ├─inner
│ │ │ │ │ │ └─x
│ │ │ │ │ └─x
│ │ │ │ │ └─v1
│ │ │ │ │ └─y
│ │ │ │ └─old
│ │ │ │ ├─p1
│ │ │ │ └─p2
│ │ │ ├─norunexample
│ │ │ ├─rundir
│ │ │ │ └─sub
│ │ │ ├─script
│ │ │ ├─shadow
│ │ │ │ ├─root1
│ │ │ │ │ └─src
│ │ │ │ │ ├─foo
│ │ │ │ │ └─math
│ │ │ │ └─root2
│ │ │ │ └─src
│ │ │ │ └─foo
│ │ │ ├─src
│ │ │ │ ├─cgotest
│ │ │ │ ├─coverasm
│ │ │ │ ├─coverbad
│ │ │ │ ├─coverdep
│ │ │ │ │ └─p1
│ │ │ │ ├─coverdep2
│ │ │ │ │ ├─p1
│ │ │ │ │ └─p2
│ │ │ │ ├─coverdot1
│ │ │ │ ├─coverdot2
│ │ │ │ ├─empty
│ │ │ │ │ ├─pkg
│ │ │ │ │ ├─pkgtest
│ │ │ │ │ ├─pkgtestxtest
│ │ │ │ │ ├─pkgxtest
│ │ │ │ │ ├─test
│ │ │ │ │ ├─testxtest
│ │ │ │ │ └─xtest
│ │ │ │ ├─exclude
│ │ │ │ │ ├─empty
│ │ │ │ │ └─ignore
│ │ │ │ ├─hello
│ │ │ │ ├─my.pkg
│ │ │ │ │ └─main
│ │ │ │ ├─skipper
│ │ │ │ ├─testlist
│ │ │ │ ├─vend
│ │ │ │ │ ├─dir1
│ │ │ │ │ ├─hello
│ │ │ │ │ ├─subdir
│ │ │ │ │ ├─vendor
│ │ │ │ │ │ ├─p
│ │ │ │ │ │ ├─q
│ │ │ │ │ │ ├─strings
│ │ │ │ │ │ └─vend
│ │ │ │ │ │ └─dir1
│ │ │ │ │ │ └─dir2
│ │ │ │ │ └─x
│ │ │ │ │ ├─invalid
│ │ │ │ │ └─vendor
│ │ │ │ │ ├─p
│ │ │ │ │ │ └─p
│ │ │ │ │ └─r
│ │ │ │ ├─vetcycle
│ │ │ │ ├─vetfail
│ │ │ │ │ ├─p1
│ │ │ │ │ └─p2
│ │ │ │ ├─vetpkg
│ │ │ │ └─xtestonly
│ │ │ ├─testcover
│ │ │ │ ├─pkg1
│ │ │ │ ├─pkg2
│ │ │ │ ├─pkg3
│ │ │ │ └─pkg4
│ │ │ ├─testimport
│ │ │ │ ├─p1
│ │ │ │ └─p2
│ │ │ ├─testinternal
│ │ │ ├─testinternal2
│ │ │ │ └─x
│ │ │ │ └─y
│ │ │ │ └─z
│ │ │ │ └─internal
│ │ │ │ └─w
│ │ │ ├─testinternal3
│ │ │ ├─testinternal4
│ │ │ │ └─src
│ │ │ │ ├─p
│ │ │ │ └─q
│ │ │ │ ├─internal
│ │ │ │ │ └─x
│ │ │ │ └─j
│ │ │ ├─testonly
│ │ │ ├─testonly2
│ │ │ ├─testterminal18153
│ │ │ ├─testvendor
│ │ │ │ └─src
│ │ │ │ ├─p
│ │ │ │ └─q
│ │ │ │ ├─vendor
│ │ │ │ │ └─x
│ │ │ │ ├─y
│ │ │ │ └─z
│ │ │ └─testvendor2
│ │ │ ├─src
│ │ │ │ └─p
│ │ │ └─vendor
│ │ │ └─x
│ │ ├─gofmt
│ │ │ └─testdata
│ │ ├─internal
│ │ │ ├─bio
│ │ │ ├─browser
│ │ │ ├─buildid
│ │ │ │ └─testdata
│ │ │ ├─diff
│ │ │ ├─dwarf
│ │ │ ├─edit
│ │ │ ├─gcprog
│ │ │ ├─goobj
│ │ │ │ └─testdata
│ │ │ │ └─mycgo
│ │ │ ├─goobj2
│ │ │ ├─obj
│ │ │ │ ├─arm
│ │ │ │ ├─arm64
│ │ │ │ ├─mips
│ │ │ │ ├─ppc64
│ │ │ │ ├─riscv
│ │ │ │ ├─s390x
│ │ │ │ ├─wasm
│ │ │ │ └─x86
│ │ │ ├─objabi
│ │ │ ├─objfile
│ │ │ ├─src
│ │ │ ├─sys
│ │ │ └─test2json
│ │ │ └─testdata
│ │ ├─link
│ │ │ ├─internal
│ │ │ │ ├─amd64
│ │ │ │ ├─arm
│ │ │ │ ├─arm64
│ │ │ │ ├─ld
│ │ │ │ │ └─testdata
│ │ │ │ │ ├─httptest
│ │ │ │ │ │ └─main
│ │ │ │ │ ├─issue10978
│ │ │ │ │ ├─issue25459
│ │ │ │ │ │ ├─a
│ │ │ │ │ │ └─main
│ │ │ │ │ ├─issue26237
│ │ │ │ │ │ ├─b.dir
│ │ │ │ │ │ └─main
│ │ │ │ │ └─issue32233
│ │ │ │ │ ├─lib
│ │ │ │ │ └─main
│ │ │ │ ├─loadelf
│ │ │ │ ├─loader
│ │ │ │ ├─loadmacho
│ │ │ │ ├─loadpe
│ │ │ │ ├─loadxcoff
│ │ │ │ ├─mips
│ │ │ │ ├─mips64
│ │ │ │ ├─objfile
│ │ │ │ ├─ppc64
│ │ │ │ ├─riscv64
│ │ │ │ ├─s390x
│ │ │ │ ├─sym
│ │ │ │ ├─wasm
│ │ │ │ └─x86
│ │ │ └─testdata
│ │ ├─nm
│ │ ├─objdump
│ │ │ └─testdata
│ │ ├─pack
│ │ ├─pprof
│ │ ├─test2json
│ │ ├─trace
│ │ ├─vendor
│ │ │ ├─github.com
│ │ │ │ ├─google
│ │ │ │ │ └─pprof
│ │ │ │ │ ├─driver
│ │ │ │ │ ├─internal
│ │ │ │ │ │ ├─binutils
│ │ │ │ │ │ ├─driver
│ │ │ │ │ │ ├─elfexec
│ │ │ │ │ │ ├─graph
│ │ │ │ │ │ ├─measurement
│ │ │ │ │ │ ├─plugin
│ │ │ │ │ │ ├─report
│ │ │ │ │ │ ├─symbolizer
│ │ │ │ │ │ ├─symbolz
│ │ │ │ │ │ └─transport
│ │ │ │ │ ├─profile
│ │ │ │ │ └─third_party
│ │ │ │ │ ├─d3
│ │ │ │ │ ├─d3flamegraph
│ │ │ │ │ └─svgpan
│ │ │ │ └─ianlancetaylor
│ │ │ │ └─demangle
│ │ │ └─golang.org
│ │ │ └─x
│ │ │ ├─arch
│ │ │ │ ├─arm
│ │ │ │ │ └─armasm
│ │ │ │ ├─arm64
│ │ │ │ │ └─arm64asm
│ │ │ │ ├─ppc64
│ │ │ │ │ └─ppc64asm
│ │ │ │ └─x86
│ │ │ │ └─x86asm
│ │ │ ├─crypto
│ │ │ │ ├─ed25519
│ │ │ │ │ └─internal
│ │ │ │ │ └─edwards25519
│ │ │ │ └─ssh
│ │ │ │ └─terminal
│ │ │ ├─mod
│ │ │ │ ├─internal
│ │ │ │ │ └─lazyregexp
│ │ │ │ ├─modfile
│ │ │ │ ├─module
│ │ │ │ ├─semver
│ │ │ │ ├─sumdb
│ │ │ │ │ ├─dirhash
│ │ │ │ │ ├─note
│ │ │ │ │ └─tlog
│ │ │ │ └─zip
│ │ │ ├─sys
│ │ │ │ ├─unix
│ │ │ │ └─windows
│ │ │ ├─tools
│ │ │ │ └─go
│ │ │ │ ├─analysis
│ │ │ │ │ ├─internal
│ │ │ │ │ │ ├─analysisflags
│ │ │ │ │ │ └─facts
│ │ │ │ │ ├─passes
│ │ │ │ │ │ ├─asmdecl
│ │ │ │ │ │ ├─assign
│ │ │ │ │ │ ├─atomic
│ │ │ │ │ │ ├─bools
│ │ │ │ │ │ ├─buildtag
│ │ │ │ │ │ ├─cgocall
│ │ │ │ │ │ ├─composite
│ │ │ │ │ │ ├─copylock
│ │ │ │ │ │ ├─ctrlflow
│ │ │ │ │ │ ├─errorsas
│ │ │ │ │ │ ├─httpresponse
│ │ │ │ │ │ ├─inspect
│ │ │ │ │ │ ├─internal
│ │ │ │ │ │ │ └─analysisutil
│ │ │ │ │ │ ├─loopclosure
│ │ │ │ │ │ ├─lostcancel
│ │ │ │ │ │ ├─nilfunc
│ │ │ │ │ │ ├─printf
│ │ │ │ │ │ ├─shift
│ │ │ │ │ │ ├─stdmethods
│ │ │ │ │ │ ├─structtag
│ │ │ │ │ │ ├─tests
│ │ │ │ │ │ ├─unmarshal
│ │ │ │ │ │ ├─unreachable
│ │ │ │ │ │ ├─unsafeptr
│ │ │ │ │ │ └─unusedresult
│ │ │ │ │ └─unitchecker
│ │ │ │ ├─ast
│ │ │ │ │ ├─astutil
│ │ │ │ │ └─inspector
│ │ │ │ ├─cfg
│ │ │ │ └─types
│ │ │ │ ├─objectpath
│ │ │ │ └─typeutil
│ │ │ └─xerrors
│ │ │ └─internal
│ │ └─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
│ │ ├─cipher
│ │ ├─des
│ │ ├─dsa
│ │ ├─ecdsa
│ │ │ └─testdata
│ │ ├─ed25519
│ │ │ ├─internal
│ │ │ │ └─edwards25519
│ │ │ └─testdata
│ │ ├─elliptic
│ │ ├─hmac
│ │ ├─internal
│ │ │ ├─randutil
│ │ │ └─subtle
│ │ ├─md5
│ │ ├─rand
│ │ ├─rc4
│ │ ├─rsa
│ │ │ └─testdata
│ │ ├─sha1
│ │ ├─sha256
│ │ ├─sha512
│ │ ├─subtle
│ │ ├─tls
│ │ │ └─testdata
│ │ └─x509
│ │ ├─pkix
│ │ └─testdata
│ ├─database
│ │ └─sql
│ │ └─driver
│ ├─debug
│ │ ├─dwarf
│ │ │ └─testdata
│ │ ├─elf
│ │ │ └─testdata
│ │ ├─gosym
│ │ │ └─testdata
│ │ ├─macho
│ │ │ └─testdata
│ │ ├─pe
│ │ │ └─testdata
│ │ └─plan9obj
│ │ └─testdata
│ ├─encoding
│ │ ├─ascii85
│ │ ├─asn1
│ │ ├─base32
│ │ ├─base64
│ │ ├─binary
│ │ ├─csv
│ │ ├─gob
│ │ ├─hex
│ │ ├─json
│ │ │ └─testdata
│ │ ├─pem
│ │ └─xml
│ ├─errors
│ ├─expvar
│ ├─flag
│ ├─fmt
│ ├─go
│ │ ├─ast
│ │ ├─build
│ │ │ └─testdata
│ │ │ ├─cgo_disabled
│ │ │ ├─doc
│ │ │ ├─empty
│ │ │ ├─multi
│ │ │ ├─other
│ │ │ │ └─file
│ │ │ └─withvendor
│ │ │ └─src
│ │ │ └─a
│ │ │ ├─b
│ │ │ └─vendor
│ │ │ └─c
│ │ │ └─d
│ │ ├─constant
│ │ ├─doc
│ │ │ └─testdata
│ │ ├─format
│ │ ├─importer
│ │ ├─internal
│ │ │ ├─gccgoimporter
│ │ │ │ └─testdata
│ │ │ ├─gcimporter
│ │ │ │ └─testdata
│ │ │ │ └─versions
│ │ │ └─srcimporter
│ │ │ └─testdata
│ │ │ ├─issue20855
│ │ │ ├─issue23092
│ │ │ └─issue24392
│ │ ├─parser
│ │ │ └─testdata
│ │ ├─printer
│ │ │ └─testdata
│ │ ├─scanner
│ │ ├─token
│ │ └─types
│ │ └─testdata
│ ├─hash
│ │ ├─adler32
│ │ ├─crc32
│ │ ├─crc64
│ │ ├─fnv
│ │ └─maphash
│ ├─html
│ │ └─template
│ ├─image
│ │ ├─color
│ │ │ └─palette
│ │ ├─draw
│ │ ├─gif
│ │ ├─internal
│ │ │ └─imageutil
│ │ ├─jpeg
│ │ ├─png
│ │ │ └─testdata
│ │ │ └─pngsuite
│ │ └─testdata
│ ├─index
│ │ └─suffixarray
│ ├─internal
│ │ ├─bytealg
│ │ ├─cfg
│ │ ├─cpu
│ │ ├─fmtsort
│ │ ├─goroot
│ │ ├─goversion
│ │ ├─lazyregexp
│ │ ├─lazytemplate
│ │ ├─nettrace
│ │ ├─obscuretestdata
│ │ ├─oserror
│ │ ├─poll
│ │ ├─race
│ │ ├─reflectlite
│ │ ├─singleflight
│ │ ├─syscall
│ │ │ ├─execenv
│ │ │ ├─unix
│ │ │ └─windows
│ │ │ ├─registry
│ │ │ └─sysdll
│ │ ├─testenv
│ │ ├─testlog
│ │ ├─trace
│ │ │ └─testdata
│ │ └─xcoff
│ │ └─testdata
│ ├─io
│ │ └─ioutil
│ │ └─testdata
│ ├─log
│ │ └─syslog
│ ├─math
│ │ ├─big
│ │ ├─bits
│ │ ├─cmplx
│ │ └─rand
│ ├─mime
│ │ ├─multipart
│ │ │ └─testdata
│ │ ├─quotedprintable
│ │ └─testdata
│ ├─net
│ │ ├─http
│ │ │ ├─cgi
│ │ │ │ └─testdata
│ │ │ ├─cookiejar
│ │ │ ├─fcgi
│ │ │ ├─httptest
│ │ │ ├─httptrace
│ │ │ ├─httputil
│ │ │ ├─internal
│ │ │ ├─pprof
│ │ │ └─testdata
│ │ ├─internal
│ │ │ └─socktest
│ │ ├─mail
│ │ ├─rpc
│ │ │ └─jsonrpc
│ │ ├─smtp
│ │ ├─testdata
│ │ ├─textproto
│ │ └─url
│ ├─os
│ │ ├─exec
│ │ ├─signal
│ │ │ └─internal
│ │ │ └─pty
│ │ └─user
│ ├─path
│ │ └─filepath
│ ├─plugin
│ ├─reflect
│ ├─regexp
│ │ ├─syntax
│ │ └─testdata
│ ├─runtime
│ │ ├─cgo
│ │ ├─debug
│ │ ├─internal
│ │ │ ├─atomic
│ │ │ ├─math
│ │ │ └─sys
│ │ ├─msan
│ │ ├─pprof
│ │ │ ├─internal
│ │ │ │ └─profile
│ │ │ └─testdata
│ │ │ └─mappingtest
│ │ ├─race
│ │ │ └─testdata
│ │ ├─testdata
│ │ │ ├─testfaketime
│ │ │ ├─testprog
│ │ │ ├─testprogcgo
│ │ │ │ └─windows
│ │ │ ├─testprognet
│ │ │ └─testwinlib
│ │ └─trace
│ ├─sort
│ ├─strconv
│ │ └─testdata
│ ├─strings
│ ├─sync
│ │ └─atomic
│ ├─syscall
│ │ └─js
│ ├─testdata
│ ├─testing
│ │ ├─internal
│ │ │ └─testdeps
│ │ ├─iotest
│ │ └─quick
│ ├─text
│ │ ├─scanner
│ │ ├─tabwriter
│ │ └─template
│ │ ├─parse
│ │ └─testdata
│ ├─time
│ ├─unicode
│ │ ├─utf16
│ │ └─utf8
│ ├─unsafe
│ └─vendor
│ └─golang.org
│ └─x
│ ├─crypto
│ │ ├─chacha20
│ │ ├─chacha20poly1305
│ │ ├─cryptobyte
│ │ │ └─asn1
│ │ ├─curve25519
│ │ ├─hkdf
│ │ ├─internal
│ │ │ └─subtle
│ │ └─poly1305
│ ├─net
│ │ ├─dns
│ │ │ └─dnsmessage
│ │ ├─http
│ │ │ ├─httpguts
│ │ │ └─httpproxy
│ │ ├─http2
│ │ │ └─hpack
│ │ ├─idna
│ │ ├─lif
│ │ ├─nettest
│ │ └─route
│ ├─sys
│ │ └─cpu
│ └─text
│ ├─secure
│ │ └─bidirule
│ ├─transform
│ └─unicode
│ ├─bidi
│ └─norm
└─test
├─alias3.dir
├─bench
│ ├─garbage
│ └─go1
├─chan
├─closure3.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
│ ├─bug302.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
│ ├─gcc67968.dir
│ ├─issue10066.dir
│ ├─issue10219.dir
│ ├─issue10700.dir
│ ├─issue11053.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
│ ├─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
│ ├─issue30907.dir
│ ├─issue30908.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
│ ├─issue36085.dir
│ ├─issue4252.dir
│ ├─issue4326.dir
│ ├─issue4370.dir
│ ├─issue4510.dir
│ ├─issue4590.dir
│ ├─issue4879.dir
│ ├─issue4932.dir
│ ├─issue4964.dir
│ ├─issue5105.dir
│ ├─issue5125.dir
│ ├─issue5259.dir
│ ├─issue5260.dir
│ ├─issue5291.dir
│ ├─issue5470.dir
│ ├─issue5614.dir
│ ├─issue5755.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
├─oldescape_linkname.dir
├─retjmp.dir
├─runtime
├─stress
├─syntax
└─uintptrescapes.dir
可以看出go源码的目录是十分庞大的,但是这里我们不需要这么多,我们只需要讲讲几个大方向上的东西即可。
|– api — 目录,包含所有API列表,方便IDE使用
|– doc — 目录,Go语言的各种文档,官网上有的,这里基本会有,这也就是为什么说可以本地搭建”官网”。这里面有不少其他资源,比如gopher图标之类的。
|– lib — 目录,文档模板
|– misc — 目录,其他的一些工具,相当于大杂烩,大部分是各种编辑器的Go语言支持,还有cgo的例子等
|– src — 目录,Go语言源码:基本工具(编译器等)、标准库
`– test — 目录,包含很多测试程序(并非_test.go方式的单元测试,而是包含main包的测试),包括一些fixbug测试。可以通过这个学到一些特性的使用。
|– AUTHORS — 文件,官方 Go语言作者列表
|– CONTRIBUTORS — 文件,第三方贡献者列表
|– LICENSE — 文件,Go语言发布授权协议
|– PATENTS — 文件,专利
|– README — 文件,README文件,大家懂的。提一下,经常有人说:Go官网打不开啊,怎么办?其实,在README中说到了这个。该文件还提到,如果通过二进制安装,需要设置GOROOT环境变量;如果你将Go放在了/usr/local/go中,则可以不设置该环境变量(Windows下是C:\go)。当然,建议不管什么时候都设置GOROOT。另外,确保$GOROOT/bin在PATH目录中。
|– VERSION — 文件,当前Go版本
|– favicon.ico — 文件,官网logo
|– robots.txt — 文件,搜索引擎robots文件
然后,我们主要针对 src 目录下的内容做源码分析。
妈的,算了!刚看到网上一堆对目录讲解的,那我这里就不做赘述了,后续的篇章里我们直奔主题,讲解源码剖析。下一篇,我们先从 src/cmd 开始讲解。
本文地址:https://blog.csdn.net/qq_25870633/article/details/107459923