【quic-go】quic-go源码目录结构详解

 quic-go的源码目录如下,在./quic-go下有多个文件夹和.go文件组成了quic-go的整体库。

//quic-go代码目录
/quic-go
|-- /example
|-- /fuzzing
|-- /http3
|-- /integrationtests
|-- /internal
|-- /interop
|-- /logging
|-- /metircs
|-- /alog
|-- /quicvarin
|-- /testutils
|   |-- go.mod
|   |-- interface.go
|   |-- stream.go
|-- |--...

1.  go.mod: 在./quic-go目录下有一个go.mod文件,这个文件定义了./quic-go下所有包所属的模块名称,这个名称在go.mod文件中的第一行。所以我们在引用quic-go库时,总是可以看到需要在开头引入这个模块名称,即import  "github.com/quic-go/quic-go"。注意quic-go库只定义了这一个模块名称,即在./quic-go所有文件或者文件夹内都不包括子模块(其他的go.mod文件)

2.  ./quic-go/*.go: 在./quic-go目录下还有许多.go文件,如stream.go,frame.go等。这些都是quic-go库的源码,定义的方法和类型可以被引用。例如在client.go中定义了DialAddr的方法,并且client.go中的第一行声明所属的包是quic。我们在其他文件中导入quic-go库后,就可以使用quic.DialAddr方法引用。

3. ./quic-go /* /*.go: 在./quic-go目录下还有许多文件夹如http3,同样其也组成quic-go库的一部分。如果我想在其他.go文件调用http3文件夹下定义的包http3,我需要这样引用import  "github.com/quic-go/quic-go/http3"。因为这个http3包的定义在github.com/quic-go/quic-go模块名下一个叫http3的文件夹内。其他的子包也如此调用。

4. 不能调用的情况:在go语言中需要注意,以./quic-go/stream.go举例,stream.go第一行定义了该文件所定义的方法所属包的名字为quic。也就是说在其他.go文件,可以通过import  "github.com/quic-go/quic-go"来调用stream.go中定义的方法。但是在go语言中,一个包中首字母小写的结构体类型或者函数是私有的不能够被其他文件调用,如stream.go中定义的type stream struct就是私有的不能够被其他文件通过quic.stream来调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值