Rumah pembangunan bahagian belakang Golang Amalan terbaik untuk baki operasi dalam bahasa go

Amalan terbaik untuk baki operasi dalam bahasa go

Apr 07, 2024 pm 06:36 PM
pergi bahasa Baki operasi

Amalan terbaik: Gunakan fungsi math.Mod() terbina dalam untuk mempertimbangkan nombor negatif bagi mengelakkan ralat pembundaran baki titik terapung (matematik.Remainder()) dan gunakan operasi bitwise untuk meningkatkan prestasi (hanya apabila pembahagi adalah kuasa 2) Aplikasi praktikal: Operasi modulo ( Mengira baki) Kawalan gelung (mencetak elemen khusus) Struktur data (jadual cincang dan pemetaan utama dalam set)

Amalan terbaik untuk baki operasi dalam bahasa go

Amalan terbaik untuk baki operasi dalam bahasa Go

%。使用时,它会将左操作数除以右操作数,并将余数作为结果返回。余数运算在不同的场景中都有着广泛的应用,包括模运算、循环控制和数据结构中。

最佳实践

1. 使用内置的取余函数

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

import "math"

result := math.Mod(10, 3) // result 等于 1
Salin selepas log masuk

2. 考虑负数

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

dividend := -10
result := dividend % 3
if result < 0 {
    result += 3
}
// result 等于 2
Salin selepas log masuk

3. 避免舍入错误

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

dividend := 10.5
divisor := 3.0
result := math.Remainder(dividend, divisor) // result 等于 1.5
Salin selepas log masuk

4. 使用位运算

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

Dalam bahasa Go, cari Operator yang selebihnya ialah %. Apabila digunakan, ia membahagikan operan kiri dengan operan kanan dan mengembalikan bakinya sebagai hasilnya. Operasi selebihnya digunakan secara meluas dalam senario yang berbeza, termasuk operasi modular, kawalan gelung dan struktur data.

Amalan Terbaik

1. Gunakan fungsi baki terbina dalam

Untuk pengiraan baki yang mudah, adalah disyorkan untuk menggunakan fungsi math.Mod terbina dalam. Seperti operator %, ia membahagikan operan kiri dengan operan kanan dan mengembalikan bakinya, tetapi ia mengelakkan beberapa gelagat limpahan dan pembundaran yang boleh membawa kepada hasil yang tidak dijangka.

remainder := number & (divisor - 1) // 当 divisor 是 2 的幂时
Salin selepas log masuk
2. Pertimbangkan nombor negatif

Apabila mengira baki nombor negatif, pengendali % mungkin tidak menghasilkan keputusan yang diharapkan. Sebagai contoh, hasil -10 % 3 ialah -1 dan bukannya 2 kerana operasi modulo dalam Go sentiasa menghasilkan hasil dengan tanda yang sama seperti pembahagi. Untuk mendapatkan baki yang betul, tukar operan kiri kepada nombor bukan negatif dan kemudian lakukan operasi modulo.

remainder := 25 % 7 // remainder 等于 4
Salin selepas log masuk
3. Elakkan ralat pembundaran

Untuk baki nombor titik terapung, pengendali % boleh menyebabkan ralat pembundaran. Ini kerana nombor titik terapung diwakili dalam komputer sebagai binari, jadi operasi pembahagiannya mungkin tidak tepat. Untuk mengelakkan masalah ini, anda boleh menggunakan fungsi math.Remainder untuk mengira baki nombor titik terapung. Fungsi ini dijamin untuk mengembalikan baki dengan tanda yang sama seperti operan kiri. 🎜
for i := 1; i <= 10; i++ {
    if i % 2 == 1 {
        fmt.Println(i)
    }
}
Salin selepas log masuk
🎜🎜4. Gunakan operasi bitwise🎜🎜🎜Dalam sesetengah kes, terutamanya apabila integer yang lebih kecil terlibat, menggunakan operasi bitwise untuk operasi modulo boleh meningkatkan prestasi. Untuk pembahagi dengan n ialah kuasa 2, bakinya boleh dikira menggunakan formula berikut: 🎜
hashValue := key % tableSize // 计算哈希值
entry := table[hashValue] // 从哈希表中获取对应的条目
Salin selepas log masuk
🎜🎜Kes praktikal🎜🎜🎜🎜Operasi modular🎜🎜🎜Operasi modular ialah aplikasi klasik baki operasi. Ia digunakan untuk mengira baki nombor tertentu dibahagikan dengan nombor lain. Sebagai contoh, kod berikut mengira baki 25 dibahagikan dengan 7: 🎜rrreee🎜🎜Kawalan gelung🎜🎜🎜Operasi baki juga boleh digunakan dalam kawalan gelung. Contohnya, kod berikut mencetak nombor ganjil dari 1 hingga 10: 🎜rrreee🎜🎜Struktur Data🎜🎜🎜Dalam struktur data seperti jadual dan set cincang, operasi selebihnya digunakan untuk memetakan kunci ke kedudukan tertentu dalam baldi atau set. Contohnya, kod berikut mencari kunci dalam jadual cincang: 🎜rrreee

Atas ialah kandungan terperinci Amalan terbaik untuk baki operasi dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang May 03, 2024 pm 12:15 PM

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang

Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Apr 25, 2024 pm 02:39 PM

Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go May 08, 2024 pm 03:09 PM

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? May 07, 2024 pm 12:39 PM

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang?

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin May 08, 2024 pm 09:42 PM

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin

Evolusi konvensyen penamaan fungsi golang Evolusi konvensyen penamaan fungsi golang May 01, 2024 pm 03:24 PM

Evolusi konvensyen penamaan fungsi golang

Peranan teknologi Golang dalam pembangunan IoT mudah alih Peranan teknologi Golang dalam pembangunan IoT mudah alih May 09, 2024 pm 03:51 PM

Peranan teknologi Golang dalam pembangunan IoT mudah alih

Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi? Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi? Apr 29, 2024 am 11:33 AM

Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi?

See all articles