如果我运行此代码,一切正常,最终结果似乎没有任何错误(正在打印正确的ID)。
function category_posts_per_page( $query ) {
if ( !is_admin()
&& $query->is_category()
&& $query->is_main_query() ) {
$query->set( 'posts_per_page', 5 );
}
}
add_action( 'pre_get_posts', 'category_posts_per_page' );
但是当我在末尾添加另一个stmt, err := db.Conn.Prepare("INSERT INTO tablename a VALUES (?)")
CheckErr(err)
defer stmt.Close()
res, err := stmt.Exec(&t.Id)
CheckErr(err)
id, err := res.LastInsertId()
fmt.Println(id)
并运行时,我得到了:
CheckErr(err)
这是发生恐慌之后堆栈跟踪中的第一件事:
runtime error: invalid memory address or nil pointer dereference
没有打印id,这很奇怪,因为println在新的CheckErr(err)之前
知道为什么会这样吗?我一无所知
id, err := res.LastInsertId()
答案 0 :(得分:2)
CheckErr(err)
不会退出或返回err != nil
。该程序将继续执行到id, err := res.LastInsertId()
,如果res
为零,则会出现紧急情况。