Get转到定义是如下代码,
站在用户的角度思考问题,与客户深入沟通,找到玛纳斯网站设计与玛纳斯网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖玛纳斯地区。
func (c *Client) Get(url string) (resp *Response, err error) {
req, err := NewRequest("GET", url, nil)
if err != nil {
return nil, err
}
return c.Do(req)
}
看上去已经有足够多的动作了,并不是你说的只是一个接口啊
一直直接操作的框架 使用vscode 打开就会自动装包,这次想写一个简单应用,确不会怎么建项目,记录如下。
go1.14 后,以及不再需要把项目写在GOPATH下,所有不需要再配置。
配置GOPRXY goenv-w GOPROXY=(国内无法访问)
使用go mod方法新建项目。
任意位置新建文件夹。
文件夹下执行go mod xxx ,生成一个go.mod文件。
新建一个main.go文件,就可以直接运行了。
我开始的时候,先建了main.go文件,再执行的go.mod。后面没法运行。
参考:李文周的博客。
1、new 的主要特性
首先 new 是内建函数,定义也很简单:
func new(Type) *Type
内建函数 new 用来分配内存,第一个参数是一个类型,不是一个值,返回值是一个指向新分配类型零值的指针
实现一个类似 new 的功能:
func newInt() *int {
var i int
return i
}
someInt := newInt()
函数的功能跟 someInt := new(int) 一模一样。定义 new 开头的函数时,出于约定也应该返回类型的指针。
2、make 的主要特性
make 也是内建函数,定义比 new 多了一个参数,返回值也不同:
func make(Type, size IntegerType) Type
内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型,具体说明如下:
Slice: 第二个参数 size 指定了长度,容量和长度相同。
可以传入第三个参数来指定不同的容量值,但必须不能比长度值小。
比如 make([]int, 0, 10)
Map: 根据 size 大小来初始化分配内存,不过分配后的 map 长度为 0,如果 size 被忽略了,那么会在初始化分配内存时分配一个小尺寸的内存
Channel: 管道缓冲区依据缓冲区容量被初始化。如果容量为 0 或者忽略容量,管道没有缓冲区。
3、总结
new 的作用是初始化一个指向类型的指针(*T),make 的作用是为 slice,map 或 chan 初始化并返回引用(T)。