Maison >développement back-end >Golang >Méthodes et techniques de requête couramment utilisées dans Golang

Méthodes et techniques de requête couramment utilisées dans Golang

PHPz
PHPzoriginal
2023-04-05 09:11:41923parcourir

Ces dernières années, Golang est devenu de plus en plus populaire dans le domaine du développement backend, et de nombreuses entreprises ont commencé à utiliser Golang pour créer leurs propres applications. Cependant, au cours du processus de développement, nous devons affronter et résoudre certaines difficultés. Comment interroger efficacement est une question importante. Cet article présentera les méthodes et techniques de requête courantes dans Golang pour vous aider à résoudre ce problème plus facilement.

1. Requête à partir de tableaux et de tranches

1.1 Requête traversante

La méthode de requête la plus basique et la plus courante consiste à parcourir le tableau ou la tranche, en utilisant une boucle for pour parcourir les éléments un par un et les comparer. Bien que cette méthode puisse terminer l'opération de requête, la vitesse de requête est relativement lente, en particulier lorsque la quantité de données est importante, l'efficacité sera encore plus faible.

1.2 Recherche binaire

La recherche binaire est une méthode de requête efficace, adaptée aux tableaux ou tranches ordonnés. Il compare en permanence la valeur intermédiaire avec la valeur cible, puis réduit progressivement la plage de requête pour finalement trouver la valeur cible.

Ce qui suit est un exemple de code pour la recherche binaire :

func binarySearch(nums []int, target int) int {
    left, right := 0, len(nums)-1
    
    for left <= right {
        mid := (left + right) / 2
        
        if nums[mid] == target {
            return mid
        } else if nums[mid] < target {
            left = mid + 1
        } else {
            right = mid - 1
        }
    }
    
    return -1
}

1.3 Requête utilisant map

Map est un type de données associatif en Golang, similaire à un dictionnaire en Python. Il peut trouver rapidement la valeur correspondante en fonction de la clé, il est donc très approprié pour les opérations de requête.

Ce qui suit est un exemple de code pour interroger à l'aide de map :

func lookup(nums []int, target int) bool {
    mp := make(map[int]bool)
    
    for _, num := range nums {
        mp[num] = true
    }
    
    return mp[target]
}

2. Requête à partir de la base de données

Dans les applications pratiques, nous avons souvent besoin d'interroger des données de la base de données. Il existe une variété de bibliothèques d'opérations de base de données dans Golang, telles que base de données/sql, gorm, etc., et elles fournissent toutes les méthodes de requête correspondantes.

2.1 Utiliser database/sql pour la requête

database/sql est la bibliothèque d'opérations de base de données par défaut dans Golang. Elle prend en charge une variété de bases de données relationnelles, telles que MySQL, PostgreSQL, SQLite, etc.

Ce qui suit est un exemple de code pour interroger à l'aide de base de données/sql :

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func query() {
    db, err := sql.Open("mysql", "USER:PASSWORD@/DATABASENAME")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    rows, err := db.Query("SELECT * FROM mytable")
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    for rows.Next() {
        var id int
        var name string
        if err := rows.Scan(&id, &name); err != nil {
            panic(err.Error())
        }
        fmt.Println(id, name)
    }
}

2.2 Requête à l'aide de gorm

gorm est une puissante bibliothèque ORM (Object Relational Mapping) qui fournit de bonnes interfaces de requête et des fonctions qui peuvent aider les développeurs à exploiter la base de données. plus commodément.

Ce qui suit est un exemple de code pour interroger à l'aide de gorm :

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

type User struct {
    ID   int
    Name string
    Age  int
}

func main() {
    db, err := gorm.Open("mysql", "USER:PASSWORD@/DATABASENAME?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    var users []User
    db.Where("age > ?", 18).Find(&users)

    for _, user := range users {
        fmt.Println(user.ID, user.Name, user.Age)
    }
}

3 Résumé

Lorsque nous utilisons Golang pour interroger, nous pouvons utiliser la traversée, la recherche binaire, la carte et d'autres méthodes pour interroger. Pour les requêtes à partir de la base de données, database/sql et gorm sont deux bibliothèques couramment utilisées. Elles fournissent toutes deux des interfaces et des fonctions de requête. Les développeurs peuvent choisir la bibliothèque appropriée à utiliser en fonction de leurs besoins.

Quelle que soit la méthode de requête utilisée, vous devez prêter attention à l'efficacité et aux performances des requêtes, réduire autant que possible les opérations de traversée inutiles et améliorer l'efficacité des requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn