17:27:52 上班!
17:27:54 上班!
17:27:56 上班!
17:27:58 上班!
17:28:00 上班!
17:28:02 下班!
17:28:02 無腦發呆中!
*/
package main
import (
"context"
"log"
"os"
"time"
)var (
logg *log.logger
)func work(ctx context.context, ch chan bool)
}}func main()
/* outfile:
17:29:43 上班!
17:29:45 上班!
17:29:47 上班!
17:29:49 下班!
17:29:53 無腦發呆中!
*/
3.context.withtimeout
package main
import (
"context"
"log"
"os"
"time"
)var (
logg *log.logger
)func work(ctx context.context, ch chan bool)
}}func main()
/* outfile:
17:34:56 上班!
17:34:58 上班!
17:35:00 上班!
17:35:02 下班!
17:35:06 無腦發呆中!
*/
package main
import (
"context"
"fmt"
"log"
"os"
"time"
)var (
logg *log.logger
)func work(ctx context.context, ch chan bool)
}select
}}func main()
/* outfile:
2019-01-30 18:23:47.851042 +0800 cst m=+5.000360703
18:23:42 上班!
2019-01-30 18:23:47.851042 +0800 cst m=+5.000360703
18:23:43 上班!
2019-01-30 18:23:47.851042 +0800 cst m=+5.000360703
18:23:44 上班!
2019-01-30 18:23:47.851042 +0800 cst m=+5.000360703
18:23:45 上班!
2019-01-30 18:23:47.851042 +0800 cst m=+5.000360703
18:23:46 上班!
2019-01-30 18:23:47.851042 +0800 cst m=+5.000360703
18:23:47 超時退出!
18:23:47 context deadline exceeded //這裡就是ctx超時的時候ctx.err的錯誤訊息。
18:23:52 無腦發呆中!
*/
package main
import (
"context"
"fmt"
)func main()
func processrequest(username, password string)
func handleresponse(ctx context.context)
/* outfile:
處理響應 使用者名稱:admin 密碼:admin888
*/
使用的key必須是可比較的,也就是說== 和 != 必須能返回正確的結果返回值必須是併發安全的,這樣才能從多個goroutine訪問
type foo int
type bar int
m := make(map[inte***ce{}]int)
m[foo(1)] = 1
m[bar(1)] = 2
fmt.printf("%v", m)
/*map[1:2 1:1]
*/
當你把所有這些放在一起時,你會得到類似下面的例子:
package main
import (
"context"
"fmt"
)func main()
type ctxkey int
const (
ctxusername ctxkey = iota
ctxpassword
)func username(c context.context) string
func password(c context.context) string
func processrequest(username, password string)
func handleresponse(ctx context.context)
/* outfile:
處理響應 使用者名稱:jane 密碼:abc123
*/
學習筆記 Golang起步之HelloWord
進入官網 以mac終端為 zsh為例,輸入下面命令 vi zshrc在最後追加下面 users quaint study golang study 為你的golang 工作空間,該空間下應該包含3個資料夾 src pkg bin root 為go安裝目錄 path 為go工作空間 export go...
Golang學習筆記
如果乙個method的receiver是 t,你可以在乙個t型別的例項變數v上面呼叫這個method,而不需要 v去呼叫這個method 即不需要 v method 如果乙個method的receiver是t,你可以在乙個 t型別的變數p上呼叫這個method,而不需要 p去呼叫這個method。i...
golang學習筆記
與c語法不同之處 1.引數列表中各個引數型別相同時可以只寫出最後乙個,如 add x,y int int 2.型別在引數名 變數 函式 後面 3.函式的左大括號要跟函式名同一行,否則編譯不過 4.函式定義要先寫關鍵字func在函式開頭 函式外的每個語句都要以func var等等關鍵字開頭 5.在包或...