go新手容易犯的三個致命錯誤

2021-09-11 10:09:00 字數 2537 閱讀 2339

最近因為以前一些重要且古老的go專案基本沒有人專職維護了,所以被安排去熟悉這些專案的**,所以看了大量go的**。歷史原因,這些**中或多或少有一些剛剛從phper轉過來的gopher去設計和開發的,自然有不少是在php(fpm模式下)碼**思路下埋藏的一些坑。今天我就來和大家一起分享一下最近發現的比較不容易發現和出現比率比較高的三個致命錯誤

監測redis連線數會持續增長命令:watch -n 2 "redis-cli -h 127.0.0.1 -p 6379 info | grep 'connected_clients'" 下面的**會導致connected_clients持續增長

複製**

package main

複製**

package main

import (

"fmt"

"log"

"time"

)func

main()

} }}func

simulate

(i int)

(b bool, err error)

複製**

**可以編譯通過,但是執行到該處**塊時空指標panic,如下模擬:

2019-01-19 23:56:48.044504 +0800 cst m=+1.005583125 0

2019-01-19 23:56:49.039491 +0800 cst m=+2.000557249 1

2019-01-19 23:56:50.03956 +0800 cst m=+3.000614086 2

2019-01-19 23:56:51.043367 +0800 cst m=+4.004408337 3

2019-01-19 23:56:52.040469 +0800 cst m=+5.001497207 4

2019-01-19 23:56:53.039643 +0800 cst m=+6.000658300 5

panic: runtime error: invalid memory address or nil pointer dereference

[signal sigse**: segmentation violation code=0x1 addr=0x20 pc=0x1097a7f]

goroutine 1 [running]:

main.main()

/users/tigerb/github/easy-tips/go/src/go-learn/main.go:19 +0x1df

複製**

最後說一句,像我們這樣從phper(fmp)轉過來的gopher,碼**的時候一定要考慮到我們是在常駐記憶體的場景下程式設計,例如並不限於下面三點:

go新手容易犯的三個致命錯誤

最近因為以前一些重要且古老的go專案基本沒有人專職維護了,所以被安排去熟悉這些專案的 所以看了大量go的 歷史原因,這些 中或多或少有一些剛剛從phper轉過來的gopher去設計和開發的,自然有不少是在php fpm模式下 碼 思路下埋藏的一些坑。今天我就來和大家一起分享一下最近發現的比較不容易發...

Linux 新手容易犯的 7 個錯誤

改變作業系統對於任何人來說都是邁出的一大步,特別是當許多使用者不確定作業系統究竟如何的時候,尤其如此。但是,從windows切換到linux特別艱難。因為這兩個作業系統有不同的假設和優先順序,以及不同的做事方式。因此,新的linux使用者很容易混淆,因為他們使用windows開發的期待結果不再適用。...

!!!!新手最容易犯的錯誤

今天寫了乙個很簡單的程式,輸入三個不同長度的字串,然後將其右對齊顯示 因為剛學了幾天,經常會犯一些錯誤,如下 file day01.py line 62 print maxn len b b syntaerror invalid syntax 以上是之前的錯誤,找了好半天,也一直沒有發現,從頭到尾推...