golang 值得注意的地方(2則)

2021-09-08 18:19:52 字數 1018 閱讀 7879

golang 的語法和使用方式都非常簡單明瞭,沒有花哨的語法糖,也沒有多餘的關鍵字。

但是即使是這麼簡潔的語言,仍然有一些不那麼直白,需要注意的地方,比如下面2點。

package main

import (

"bytes"

"fmt"

"io"

)func main()

f(b)

}func f(out io.writer) else

}

inte***ce 由2部分組成,typevalue,呼叫 func f 的時候,out 的type設定為 *bytes.buffer,value設定為 nil。

此時 out != nil,因為雖然 out 的value == nil, 但是type !=nil

在寫**時如果不注意這裡,很容易導致執行時的 panic

golang 中可以通過型別判斷來進行轉型。

型別判斷時,轉型的**可以返回乙個值,也可以返回2個值(附加判斷結果 ok)。

package main

import (

"fmt"

"io"

"os"

)func main()

同一段**的返回值,卻有2種情況,channel和map也有上面的現象:(如以下**都是正確的)

var val = map["key"]

var val, ok = map["key"]

var val = <- ch

var val, ok = <- ch

這種語法的實現簡單來說,就是 golang 在型別判斷時,會根據語法樹檢查 = 左邊是否有 comma(也就是逗號),如果有的話就返回2個值,沒有就返回乙個值。

具體可以參考:

防範sql注入值得注意地方

sql注入是大家基本都清楚,一般來說用引數化就能解決注入的問題,也是最好的解決方式。有次技術群裡問到乙個問題,如下圖 很顯然tablename是外部傳遞過來的,暫時不考慮具體的業務環境,但如果以select from table 把錶名稱當引數肯定是不能執行的,如果是拼接sql會有注入的危險。那麼此...

轉貼 Unix C語言值得注意的地方

盡量的把函式弄的通用點,行少點,乙個函式只完成乙個簡單的功能,一眼就能看出來此函式有沒有 錯誤,每個函式都是健壯的,那麼你的程式就是健壯的。要少 完成乙個功能的時候在邏輯清楚的情況下 越少越好,千萬不要比 誰寫的多啊。演算法要好 在 完成乙個功能的時候要考慮效率,目前計算機的記憶體很大,所以記憶體已...

關於Validform 控制項 值得注意的地方

validform中有個引數ajaxpost選擇true和false,如果選擇true的時候要注意,前台form上的action位址是無效的,所以你可以寫可以不寫,但一定要寫 method,那麼提交表單的位址就要在validform 裡設定,validform有個引數是url其實很明顯了,我就不用贅...