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!