欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【我的架构师之路】- go源码分析笔记之源码目录

程序员文章站 2022-07-06 16:07:58
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