sql.open()函式用來開啟乙個註冊過的資料庫驅動,go-mysql-driver中註冊了mysql這 個資料庫驅動,第二個引數是dns(data source name),它是go-mysql-driver定義的 一些資料庫鏈結和配置資訊。它支援如下格式:
res, err := stmt.exec("zhangsan", "技術部", "2016-12-09")
}
刪除資料
stmt, err = db.prepare("delete from user_info where uid=?")
res, err = stmt.exec(id)
redis驅動
/*結尾buf[0:numofbytes]的原因是:numofbytes是指接收的位元組數 如果只用string(buf)
可能會導致接收字串中有其他之前接收的字元
*/fmt.println("receive server message content:" + string(buf[0:numofbytes]))
} fmt.println("client program end!")
}
// chatroom server
package main
import (
"fmt"
"log"
"net"
"os"
"strings"
)const (
log_directory = "./test.log" //記錄錯誤日誌的路徑
)var onlineconns = make(map[string]net.conn)//儲存客戶端鏈結對映 key為鏈結ip:port value為連線物件conn
var messagequeue = make(chan string, 1000)//訊息佇列 帶緩衝的buf
var logfile *os.file
var logger *log.logger
var quitchan = make(chan bool)
func checkerror(err error)
}//訊息接收協程
func processinfo(conn net.conn)
}(conn) //採用匿名函式的方式 呼叫defer
for
if numofbytes != 0 }}
//消費者協程
func consumemessage() }}
//訊息解析函式
func doprocessmessage(message string)
} } else
if conn, ok := onlineconns[contents[0]]; ok
}} }
}func main()
defer logfile.close()
//利用go自帶的log 將開啟檔案物件生成日誌檔案物件
logger = log.new(logfile, "\r\n", log.ldate|log.ltime|log.llongfile)
listen_socket, err := net.listen("tcp", "127.0.0.1:8080")
checkerror(err)
defer listen_socket.close()
fmt.println("server is waiting....")
logger.println("i am writing the logs...")
//開啟消費者協程
go consumemessage()
for
//開啟協程處理
go processinfo(conn)
}}
Go語言基礎知識點分享
最近在加深對go語言基礎知識學習,鞏固下基礎,同時分享給朋友們 go中單元測試 go 中給我們提供乙個包 testing,go 為我們提供一些很好的功能,我們可以在不需要太多學習的情況下使用它們。若要在 go 中開始使用測試,首先需要定義要測試的包。如果還沒有,請建立乙個名為 testing101 ...
C語言知識點(三) 基礎知識
防止該標頭檔案被重複引用 對於 include,編譯器從標準庫路徑開始搜尋 filename.h 對於 include filename.h 編譯器從使用者的工作路徑開始搜尋 filename.h 1 引用本身是變數的別名,對引用的操作就是對變數本身的操作 2 引用必須要被初始化,指標可以不被初始化...
C 基礎知識點(三)
委託 事件單獨列乙個部分來寫,專案裡面用到太多了。類似c 中的函式指標,乙個例子 int max int x,int y delegate int mydelegate int a,int b mydelegate md max 例項化 int c md 1,2 為了進一步簡化 直接不定義max函式...