Golang中国

leronpror

Golang China 第 3275 号会员,加入于 2015-04-10 15:12


leronpror最近创建的主题


9 go 不能发送udp广播,这算不算是一个bug?
问与答leronpror • 2016-06-08 14:50 • 最后回复来自 sheepbao
leronpror 创建的更多主题

leronpror最近回复了


回复了 631768417 创建的主题: 关于 type func 的问题。迷糊了 2017-05-19 17:28

type EngineFactory func(*node.Node, config.Getter) (engine.Engine, error)
准确的说应该是定义一个新的类型,你还可以为这个新类型提供成员函数

回复了 631768417 创建的主题: 关于 type func 的问题。迷糊了 2017-05-19 17:25

type EngineFactory func(*node.Node, config.Getter) (engine.Engine, error)
这只是声明一个函数类型,为什么需要实现呢?就像 type MyInt int , 难道MyInt也需要实现?

回复了 MR_r 创建的主题: map作为参数传递,插入数据,怎么最后输出,却是空的? 传递错了? 2017-05-19 17:15

Test_gd_load()里面AllItems=make(map)一次,然后调用loadData()把AllItems当参数传进去了,里面AllItems=make(map)又来一次,我也是醉了,这时候AllItems指向新的地址了,但是你在loadData()里面initAllItems(p)的时候,这个p却是你最开始make的,然后你打印后来make的当然没有东西了。。。

回复了 xhyf2016 创建的主题: 求golang后台开发 2016-09-22 11:57

能否兼职?

回复了 zbzpo2002 创建的主题: Golang.org竟然能访问了? 为啥? 这个不是真的吧? 2016-08-31 15:38

还可以访问

回复了 lansan 创建的主题: golang结构体调用方法有点疑问 2016-08-10 00:10

接口查询

回复了 leronpror 创建的主题: go 不能发送udp广播,这算不算是一个bug? 2016-06-07 22:48

广播的消息是要经过自己的回环的

回复了 leronpror 创建的主题: go 不能发送udp广播,这算不算是一个bug? 2016-06-07 17:12

发出去是可以的,但是接不到回复,java是可以的,而且人家还是跑在虚拟机上的.

回复了 leronpror 创建的主题: go 不能发送udp广播,这算不算是一个bug? 2016-06-03 19:47

有测试吗?能收到回复吗?

回复了 dyllen 创建的主题: http.Handler类型,加&和不加&的问题? 2016-02-24 22:41

都理解错了,这个其实就是go接口的一点复杂性.
首先interface{}变量本身也是一种特殊指针.
上面说到的情况编译信息已经说的很明确了,Router does not implement http.Handler (ServeHTTP method has pointer receiver). 关键就是这个receiver,当你给一个接口变量赋值的时候,编译器会自动根据你给的参数去匹配根据recevie的接口函数.
type Router struct {}
func (t *Router) ServeHTTP(w http.ResponseWriter, r *http.Request) {}
var handler http.Handler = &Router{}
这里的handler变量被赋值一个Router实例的指针,编译器会去匹配Router是否有一个receiver为*Router类型的接口函数,如果没有,就会报没有实现接口的错,这里Router是实现了
当var handler http.Handler = Router{}的时候就会匹配Router是否有一个receiver为Router类型的接口函数,而Router没有func (t Router) ServeHTTP(w http.ResponseWriter, r *http.Request)这样的一个函数,所以报错了.

而且当
type Router struct {}
func (t Router) ServeHTTP(w http.ResponseWriter, r *http.Request) {}
为这样的情况时,
var handler http.Handler = ???
不管这个???为*Router还是Router都是成立的,因为编译会自动在赋值参数为*Router时为func
(t Router)ServeHttp()传递(*(*Router))值recevice参数,所以是匹配的.

我自己都感觉讲的很艰难,感觉表达的很艰难.莫见怪.

leronpror 创建的更多回复