读不懂语句,实质上不够熟悉各种类型定义的语法。
1、
var mapname map[string]int //正常定义map,string是key类型,int是value类型。int前没空格。
mp1 := make(map[int][]int) //value类型是 []int切片类型。切片不指定长度,数组指定长度。
mp2 := make(map[int]*[]int) //value类型是 *[]int
用切片作为 map 的值
- 一个 key 要对应多个值怎么办?将 value 定义为 []int 类型或者其他类型的切片,就可以优雅的解决这个问题。
- 例子:
Header = map[string][]string{
Accept-Encoding": {"gzip, deflate"},
"Accept-Language": {"en-us"},
"Foo": {"Bar", "two"},
}
2、
ris := [](map[string]interface{}){} // golang 声明一个map数组
3、
gin.go中
不理解这个HandlerFunc到底是个啥?应该是表示一个参数为*Contex的函数?
// HandlerFunc defines the handler used by gin middleware as return value.
type HandlerFunc func(*Context)
搜索一个类似的,http.HandlerFunc:【没大懂,适配器是啥?】
HandlerFunc实现了ServeHTTP方法,它的ServeHTTP方法实际上是调用函数本身。
所以HandlerFunc就是一个普通函数func(http.ResponseWriter, *http.Request)满足Handler接口的适配器。
为什么ServeHTTP的实现没有返回值?
HandlerFunc到底是个啥,有返回类型吗,是没定义还是随意?从调用可知,HandlerFunc返回Handler类型,所以这个该怎么看?【直接看链接吧,解释没看懂?】
package http
type HandlerFunc func(w ResponseWriter, r *Request)
func(f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) { //func是关键字,(f HandlerFunc)是接收器,ServeHTTP是类型HandlerFunc的方法名,(w ResponseWriter, r *Request)参数
f(w,r)
}
截图
<img src="https://img2022.cnblogs.com/blog/968024/202210/968024-20221023022907390-843405363.png" width="50%">
<img src="https://img2022.cnblogs.com/blog/968024/202210/968024-20221023021630634-377111499.png" width="50%">
参考:https://zhuanlan.zhihu.com/p/354482838
4、
var strategy func(Addr) bool // 变量名是strategy,变量类型是一个函数,函数类型是 func(Addr) bool ,
// 实际上相当于仅仅摆出了函数涉及的类型,即 func关键字(参数类型) 返回类型
完整方法定义
func (addrs addrList) partition(strategy func(Addr) bool) (primaries, fallbacks addrList) {
var primaryLabel bool
for i, addr := range addrs {
label := strategy(addr)
if i == 0 || label == primaryLabel {
primaryLabel = label
primaries = append(primaries, addr)
} else {
fallbacks = append(fallbacks, addr)
}
}
return
}
(1)面向接口编程
以上方法定义中,把函数作为参数,体现了go语言中,函数是一等(first-class)公民
,当函数作为参数传递时,就更加灵活。
只需要搭一个接口框架,定义好函数的类型样式,把函数作为参数传递出去,函数的具体实现由具体场景接口实现来决定。
实际上是面向接口的编程,终极目的是为了复用代码时保证一定的灵活性。
(2)方法相当于消息,方法调用就是给对象发送一条消息。
作者:西伯尔
出处:http://www.cnblogs.com/sybil-hxl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。