Go语言通过Luhn算法验证信用卡卡号是否有效的方法

本文实例讲述了Go语言通过Luhn算法验证信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下:


package main

import (

    "fmt"

    "strings"

)

const input = `49927398716

49927398717

1234567812345678

1234567812345670`

var t = [...]int{0, 2, 4, 6, 8, 1, 3, 5, 7, 9}

func luhn(s string) bool {

    odd := len(s) & 1

    var sum int

    for i, c := range s {

        if c < '0' || c > '9' {

            return false

        }

        if i&1 == odd {

            sum += t[c-'0']

        } else {

            sum += int(c - '0')

        }

    }

    return sum%10 == 0

}

func main() {

    for _, s := range strings.Split(input, "\n") {

        fmt.Println(s, luhn(s))

    }

}

输出结果

49927398716 true

49927398717 false

1234567812345678 false

1234567812345670 true

希望本文所述对大家的Go语言程序设计有所帮助。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。