Go语言中文网 为您找到相关结果 5

golang中goroutine错误捕获讲解

之前在做其他语言是,对于异步调用,总有返回值和错误返回,并且能接收,对其进行处理。 在go语言中,对于协程goroutine的代码,因为没有返回值接收,导致新手在学习时候会有困惑: goroutine的返回值(包括错误)怎么捕获呢? 下面我们写一个列子来说明下。 package main import ( "fmt" "log" "time" ) type Resp struct { data int error error } func main() { handleMsg() } func handleMsg() { resp := make(chan Resp) stop := make(chan struct{}) go func() { t := time.Tick(time.Se...阅读全文

博文 2019-05-18 00:34:39 包牙齿

golang 面向接口编程的知识点讲解

初步介绍 相同点:如果之前使用过java语种的话,简单的讲定义一个接口,类去实现这个接口的所有方法即可。 不同点: 在golang中会区分值类型和指针类型 具体的让我们看下代码吧 第一个列子: receiver 是值类型,接口赋值的也是值类型 package main import "fmt" type Ball struct { val int } type Bar interface { setVal(newVal int) getVal() int } func (b Ball) getVal() int { return b.val } func (b Ball) setVal(newVal int) { b.val = newVal } func main() { var bar ...阅读全文

博文 2019-07-01 21:32:40 清晨的麦田

golang 结构体字节对齐的问题!疑惑

![捕获1.JPG](https://static.studygolang.com/190822/b22fda8ed511728df822d76c9a31715b.JPG) ![捕获2.JPG](https://static.studygolang.com/190822/cc4566dcf55765ce5f8dee1e0441c7d6.JPG) 上面那个列子和我想的一样 按照对齐的规则计算的 type class struct { //32 fff byte //1 className string //16 } func main(){ c:=class{ className:"111", fff:1, } fmt.Println(unsafe.Sizeof(c.className)) f...阅读全文

博文 2019-08-22 15:58:05 blackdinosuar

简明笔记:指针传递和值传递

# 简明笔记:指针传递和值传递 值传递,拷贝一份值接收者的副本。指针传递,则直接指向值接收者。 一个超级简单的列子: ```go package main import ( "fmt" ) type myself struct { name string } func (u myself) self_change_name(name string){ // 注意: 这里是拷贝一份 myself u.name = name fmt.Println(u.name) } func (u *myself) police_station_change_name(name string){ //指向myself u.name = name } func main() { ms := myself{"Po...阅读全文

博文 2019-05-04 14:20:17 faceNL