初级会员
  • 第 57569 位会员
  • __Golang__
  • 2020-10-27 14:44:13
  • 248
  • Offline
  • 19 18

最近发布的文章

最近分享的资源

    暂无

最近发布的项目

最近的评论

  • 结构体有Error方法,即实现error接口,所以fmt.Println()内会执行p.fmtString(v.Error(), verb) 如果实现String()方法(即实现Stringer接口),也会有类似结果 如果两个同时实现,打印时Error()生效 ``` switch verb { case 'v', 's', 'x', 'X', 'q': // Is it an error or Stringer? // The duplication in the bodies is necessary: // setting handled and deferring catchPanic // must happen before calling the method. switch v := p.arg.(type) { case error: handled = true defer p.catchPanic(p.arg, verb, "Error") p.fmtString(v.Error(), verb) return case Stringer: handled = true defer p.catchPanic(p.arg, verb, "String") p.fmtString(v.String(), verb) return } } ```
  • 主要是语句之间执行的时间顺序不同 第一个,main协程在handle协程执行之前先执行完成 第二个,handle协程超时,main协程select中打印,handle协程select中打印,最后defer 第三个,handle协程超时,handle协程select中打印,main协程select中打印,最后defer
  • 没有存东西不代表那一块内存不存在吧
  • 1、实现Read方法的是结构体指针`*bytes.Reader` 2、接口指针应该没撒意义吧,返回值不能为`io.Reader`?(个人粗浅认识) ``` func Test1() io.Reader{ return &bytes.Reader{} } func Test2() *io.Reader{ reader:=io.Reader(&bytes.Reader{}) return &reader } ```
  • ``` type tv struct { Name string `json:"name"` } func main() { t:=tv{"%我爱\r\n记歌词%"} b,_:=json.Marshal(t) v:=tv{} err:=json.Unmarshal(b,&v) if err!=nil { panic(err) } fmt.Println(v) } ``` 没问题呀