Maison > développement back-end > Golang > le corps du texte

Meilleures pratiques pour les opérations de reste en langage Go

PHPz
Libérer: 2024-04-07 18:36:02
original
716 Les gens l'ont consulté

Meilleure pratique : utilisez la fonction intégrée math.Mod() pour prendre en compte les nombres négatifs afin d'éviter les erreurs d'arrondi des restes à virgule flottante (math.Remainder()) et utilisez des opérations au niveau du bit pour améliorer les performances (uniquement lorsque le diviseur est une puissance de 2) Application pratique : Opération Modulo (Calcul du reste) Contrôle de boucle (impression d'éléments spécifiques) Structures de données (tables de hachage et mappages de clés dans des ensembles)

Meilleures pratiques pour les opérations de reste en langage Go

Meilleures pratiques pour les opérations de reste en langage Go

Introduction

En langage Go, recherchez L'opérateur reste est %. Lorsqu'il est utilisé, il divise l'opérande de gauche par l'opérande de droite et renvoie le reste comme résultat. Les opérations restantes sont largement utilisées dans différents scénarios, notamment les opérations modulaires, le contrôle de boucle et les structures de données. %。使用时,它会将左操作数除以右操作数,并将余数作为结果返回。余数运算在不同的场景中都有着广泛的应用,包括模运算、循环控制和数据结构中。

最佳实践

1. 使用内置的取余函数

对于简单的余数计算,推荐使用内置的 math.Mod 函数。与 % 运算符类似,它将左操作数除以右操作数并返回余数,但它避免了一些可能导致意外结果的溢出和舍入行为。

import "math"

result := math.Mod(10, 3) // result 等于 1
Copier après la connexion

2. 考虑负数

当计算负数的余数时,% 运算符可能不会产生预期的结果。例如,-10 % 3 的结果是 -1 而不是 2,因为 Go 中的取模运算总是产生一个与除数具有相同符号的结果。为了得到正确的余数,可以将左操作数转换为非负数,然后进行取模运算。

dividend := -10
result := dividend % 3
if result < 0 {
    result += 3
}
// result 等于 2
Copier après la connexion

3. 避免舍入错误

对于浮点数的取余,% 运算符可能会导致舍入错误。这是因为浮点数在计算机中是以二进制表示的,因此它们的除法运算可能不是精确的。为了避免这个问题,可以使用 math.Remainder 函数来计算浮点数的余数。该函数保证返回一个与左操作数具有相同符号的余数。

dividend := 10.5
divisor := 3.0
result := math.Remainder(dividend, divisor) // result 等于 1.5
Copier après la connexion

4. 使用位运算

在某些情况下,特别是当涉及到较小的整数时,使用位运算进行取模运算可以提高性能。对于 n

Meilleure pratique

1. Utilisez la fonction de reste intégrée

Pour les calculs de reste simples, il est recommandé d'utiliser la fonction intégrée math.Mod. Comme l'opérateur %, il divise l'opérande de gauche par l'opérande de droite et renvoie le reste, mais il évite certains comportements de débordement et d'arrondi qui peuvent conduire à des résultats inattendus.

remainder := number & (divisor - 1) // 当 divisor 是 2 的幂时
Copier après la connexion

2. Considérez les nombres négatifs

Lors du calcul du reste d'un nombre négatif, l'opérateur % peut ne pas produire les résultats attendus. Par exemple, le résultat de -10 % 3 est -1 au lieu de 2 car l'opération modulo dans Go produit toujours un résultat avec le même signe que le diviseur. Pour obtenir le reste correct, convertissez l'opérande de gauche en un nombre non négatif, puis effectuez l'opération modulo.

remainder := 25 % 7 // remainder 等于 4
Copier après la connexion

3. Évitez les erreurs d'arrondi

Pour le reste des nombres à virgule flottante, l'opérateur % peut provoquer des erreurs d'arrondi. En effet, les nombres à virgule flottante sont représentés dans les ordinateurs sous forme binaire, de sorte que leurs opérations de division peuvent ne pas être exactes. Pour éviter ce problème, vous pouvez utiliser la fonction math.Remainder pour calculer le reste d'un nombre à virgule flottante. Cette fonction est garantie de renvoyer un reste avec le même signe que l'opérande de gauche.

for i := 1; i <= 10; i++ {
    if i % 2 == 1 {
        fmt.Println(i)
    }
}
Copier après la connexion

🎜4. Utiliser des opérations au niveau du bit🎜🎜🎜Dans certains cas, en particulier lorsque des entiers plus petits sont impliqués, l'utilisation d'opérations au niveau du bit pour les opérations modulo peut améliorer les performances. Pour les diviseurs où n est une puissance de 2, le reste peut être calculé à l'aide de la formule suivante : 🎜
hashValue := key % tableSize // 计算哈希值
entry := table[hashValue] // 从哈希表中获取对应的条目
Copier après la connexion
🎜🎜Cas pratique🎜🎜🎜🎜Opération modulaire🎜🎜🎜L'opération modulaire est une application classique du reste opération. Il est utilisé pour calculer le reste d’un nombre donné divisé par un autre nombre. Par exemple, le code suivant calcule le reste de 25 divisé par 7 : 🎜rrreee🎜🎜Contrôle de boucle🎜🎜🎜Les opérations restantes peuvent également être utilisées dans le contrôle de boucle. Par exemple, le code suivant imprime les nombres impairs de 1 à 10 : 🎜rrreee🎜🎜Structures de données🎜🎜🎜Dans les structures de données telles que les tables de hachage et les ensembles, les opérations de reste sont utilisées pour mapper les clés à des positions spécifiques dans un compartiment ou un ensemble. Par exemple, le code suivant recherche une clé dans une table de hachage : 🎜rrreee

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!