Go 言語でページング クエリを実装するにはさまざまな方法がありますが、この記事ではその実装方法の 1 つである、limit キーワードと offset キーワードを使用する方法を紹介します。具体的な実装は次のとおりです。
func queryData(pageSize, pageNum int) ([]Data, error) { // 计算数据偏移量 offset := (pageNum - 1) * pageSize // 拼接查询语句 query := fmt.Sprintf("SELECT * FROM data LIMIT %d OFFSET %d", pageSize, offset) // 执行查询语句并返回结果 rows, err := db.Query(query) if err != nil { return nil, err } defer rows.Close() data := []Data{} for rows.Next() { // 解析查询结果 var id int var name string var age int err = rows.Scan(&id, &name, &age) if err != nil { return nil, err } // 将数据添加到结果集中 data = append(data, Data{ ID: id, Name: name, Age: age, }) } return data, nil }
この関数は、pageSize と pageNum の 2 つのパラメータを受け入れることができます。これらは、それぞれ各ページのデータ サイズと現在のページ番号を表します。この関数は内部でこれら 2 つのパラメータを使用してデータのオフセットを計算し、limit キーワードと offset キーワードを使用してクエリ ステートメントを結合し、次にクエリ ステートメントを実行して結果セットを解析し、最後にデータを結果セットに追加して返します。 。
この関数を使用してページング クエリを実行するのは非常に簡単で、各ページのデータ サイズと現在のページ番号を指定するだけです。たとえば、1 ページあたり 10 個のデータに基づいてページング クエリを実行できます。3 ページ目のデータをクエリするコードは次のとおりです:
data, err := queryData(10, 3) if err != nil { log.Fatal(err) } // 输出查询结果 for _, d := range data { fmt.Printf("ID=%d, Name=%s, Age=%d ", d.ID, d.Name, d.Age) }
このコードは 3 ページ目のデータをクエリします。各ページは 10 個で、クエリは結果をコンソールに出力します。クエリ中にエラーが発生した場合、プログラムはエラー メッセージを出力して終了します。
以上がgolang ページング クエリ ステートメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。