我正在尝试编写一个将在远程服务器上运行的Web应用程序.我需要记录以捕获错误/调试/审计.我发现golang有多个日志包可用,包括标准的"log"包.但是,我需要满足三个要求:
我正在编写一个基本程序来读取数据库表中的值并在表中打印.该表由一个古老的程序填充.行中的某些字段是可选的,当我尝试将它们作为字符串读取时,我收到以下错误:
panic: sql: Scan error on column index 2: unsupported driver -> Scan pair: <nil> -> *string
Run Code Online (Sandbox Code Playgroud)
在我阅读了类似问题的其他问题之后,我想出了以下代码来处理nil值.该方法在实践中工作正常.我以纯文本和空字符串而不是nil值获取值.
但是,我有两个问题:
我做错了吗?是否有更好/更清洁/高效/惯用的golang方式从数据库中读取值?
我发现很难相信像Go这样的现代语言不会优雅地处理数据库.
提前致谢!
代码段:
// DB read format
type udInfoBytes struct {
id []byte
state []byte
}
// output format
type udInfo struct {
id string
state string
}
func CToGoString(c []byte) string {
n := -1
for i, b := range c {
if b == 0 {
break
}
n = i
}
return string(c[:n+1])
}
func …Run Code Online (Sandbox Code Playgroud) 来自Python:
>>> import os
>>> s = os.stat( '/etc/termcap')
>>> print( oct(s.st_mode) )
**0o100444**
Run Code Online (Sandbox Code Playgroud)
当我查看Bash时:
$ stat -f "%p %N" /etc/termcap
**120755** /etc/termcap
Run Code Online (Sandbox Code Playgroud)
为什么这会返回不同的结果?
我正在尝试用 go 编写一个简单的数据库应用程序,它访问多个数据服务器,一些 MySQL、MSSQL 和 SqlLite3。我正在使用“database/sql”包来访问它们。
db, err := sql.Open(driver, dataSourceName)
result, err := db.Exec(
"INSERT INTO users (name, age) VALUES (?, ?)",
"gopher",
27,
)
Run Code Online (Sandbox Code Playgroud)
我需要将 SQL 查询记录到各个服务器以进行调试和审核。我怎样才能做到这一点?