英文原文在此www.nada.kth.se/~snilsson/go_for_java_programmers
译文同步至www.waylau.com
http://bbs.gocn.im/thread-89-1-1.html
=================接上文,以下正文====================
Panic and recover(恐惧和恢复)panic
(恐慌)是一个运行时错误,展开goroutine的堆栈,一路运行任何递延的功能,然后停止程序。恐慌与Java异常相似,但只适用于运行时的错误,如一个
nil
指针或试图索引数组越界。 Go程序使用内置的
error
类型
(详见上文)为了表示如文件结束等事件。
可以使用内置的recover
(恢复),重新获得控制权的恐慌的goroutine和恢复正常运行。呼叫recover
停止展开,并返回传入的参数panic
。因为只有运行的未展开代码,内部含有延迟函数,recover
只在内递延的函数有效。如果的goroutine是没有恐慌,recover
返回nil
。
Go允许用go
开启一个新的执行线程--goroutine。它运行在不同的,新创建的的goroutine中。在一个程序中的所有goroutine共享相同的地址空间。
Goroutines是轻量级的,只占用比堆栈分配多一点的空间。堆栈开始小和成长的分配和释放堆(heap)的要求。内部goroutines像进行了复用多个操作系统线程的协程。您不必担心这些细节。
go list.Sort() // Run list.Sort in parallel; don’t wait for it.
Go处理文字的函数,可以作为结束,在处理go
时很强大
func Publish(text string, delay time.Duration) { go func() { time.Sleep(delay) fmt.Println(text) }() // Note the parentheses. We must call the function. }
变量text
和delay
在周围函数和函数文字之间共享;只要它们都可以访问,它们就存在。
管道通过指定的元素类型的值来提供两个goroutine同步执行和沟通的机制。
- 【Java 数据结构及算法实战】系列 015:HJ1 字符串最后一个单词的长度
- Vue 3系列之04——Vue 3组件与Web组件的异同点
- 【Java 数据结构及算法实战】系列 013:Java队列07——双端队列Deque
- 【Java数据结构及算法实战】系列011:数组实现的优先级队列PriorityQueue
- 【Java数据结构及算法实战】系列010:Java队列04——链表实现的阻塞队列LinkedBlockingQueue
- HarmonyOS初探06——使用DevEco Studio模拟器端口被占用无法启动
- 【Java数据结构及算法实战】系列009:Java队列03——数组实现的阻塞队列ArrayBlockingQueue
- HarmonyOS初探04——使用DevEco Studio时设置Gradle仓库镜像
- 【Java数据结构及算法实战】系列008:Java队列02——阻塞队列BlockingQueue
- 鸿蒙新作《鸿蒙HarmonyOS应用开发从入门到精通》拆箱