《Go名库讲解》Macaron 系列课时 1:初识 Macaron
- 课程主页:http://t.cn/RzPWX6M - 网易云课堂:[在线学习](http://study.163.com/course/courseLearn.htm?courseId=510006#/learn/video?lessonId=1051887&courseId=510006) ## 课时大纲 [00:00] 框架简介 [05:31] 最简实例 [14:13] 扩展示例 [23:54] 小...阅读全文
- 课程主页:http://t.cn/RzPWX6M - 网易云课堂:[在线学习](http://study.163.com/course/courseLearn.htm?courseId=510006#/learn/video?lessonId=1051887&courseId=510006) ## 课时大纲 [00:00] 框架简介 [05:31] 最简实例 [14:13] 扩展示例 [23:54] 小...阅读全文
select 介绍 从不同并发执行的协程中,获取数据可以用select来完成。select监听的多个通道,也可以用通道发送数值。 select { // 接收数据 case u:= <- ch1: ... // 发送数据 case v:= <- ch2: ... ... default: // no value ready to be received ... } select 基本用法 1、如果多个通道都阻塞了,会等待知道其中一个通道可以处理。 2、如果多个通道都可以处理,随机选取一个处理。 3、如果没有通道操作可以操作并且写了default语句,会执行:default(永远是可以运行的) 4、如果防止select堵塞,可以写default来确保发送不被堵塞,没有case的select就会...阅读全文
##Filter模块与Hanlder## Hanlder是一种已知类型的回调方法,由使用者提供,可以抽象出一个type func类型来接受这种方法 type HandlerFunc func(http.ResponseWriter, *http.Request) 然后给该方法添加一个方法用来在触发该方法的调用 func (f HandlerFunc) ServeHTTP(rw http.ResponseWriter, req *http.Request) { // 执行当前Route的FilterChain filterChain := CurrentRoute(req).FilterChain if filterChain != nil { ...阅读全文
1.for i := channel { //... } 相当于 循环进行 i<-channel,直至close(channel) 2. · 给一个 nil channel 发送数据,造成永远阻塞 · 从一个 nil channel 接收数据,造成永远阻塞 · 给一个已经关闭的 channel 发送数据,引起 panic · 从一个已经关闭的 channel 接收数据,立即返回一个零...阅读全文
作为一名coder,算法不仅要会懂会写,在保证结果正确的同时,还要求性能足够高,才称得上优秀的算法。 本文比较了本人用 golang 初练算法的一些 demo,以期不断进步,假以时日,写出更好的算法。 1. 求众数(在数组中出现次数大于 n/2 的元素) a. 本人写法: func majorityElement1(nums []int) int { n := len(nums) for i := 0; i < n; i++ { equalNum := 1 for j := 0; j < n; j++ { if nums[i] == nums[j] && i != j { equalNum++ } if equalNum > n/2 { return nums[i] } } } return...阅读全文
作为一名coder,算法不仅要会懂会写,在保证结果正确的同时,还要求性能足够高,才称得上优秀的算法。 本文比较了本人用 golang 初练算法的一些 demo,以期不断进步,假以时日,写出更好的算法。 1. 求众数(在数组中出现次数大于 n/2 的元素) a. 本人写法: func majorityElement1(nums []int) int { n := len(nums) for i := 0; i < n; i++ { equalNum := 1 for j := 0; j < n; j++ { if nums[i] == nums[j] && i != j { equalNum++ } if equalNum > n/2 { return nums[i] } } } return...阅读全文
1、未使用go channelpackage main import ( "fmt" "time" ) func printer(s string) { for _, v := range s { fmt.Println(string(v)) time.Sleep(time.Millisecond * 3000) } } func person() { printer("hello") } func person2() { printer("world") } func main() { go person() go person2() for { } }d:\goprojects\src\day1\练习>go run main.go h w e o l r l l o d exit sta...阅读全文