package main import ( "fmt" "strings" ) func add(a, b string) string { // 反转字符串,方便从低位到高位计算 a = reverse(a) b = reverse(b) // 把字符串转换为数组,方便运算 aArr := strings.Split(a, "") bArr := strings.Split(b, "") // 判断谁的长度更长,确定循环次数 n := len(aArr) if m := len(bArr); m > n { n = m } // 初始化结果字符数组,用于存储计算结果 res := make([]string, n) // 进位标志 carry := 0 // 从低位到高位进行计算 for i := 0; i < n; i++ { x := 0 if i < len(aArr) { x = int(a[i] - '0') } y := 0 if i < len(bArr) { y = int(b[i] - '0') } sum := x + y + carry res[i] = string(sum%10 + '0') carry = sum / 10 } // 如果最高位有进位,则把进位加入结果字符数组的最前面 if carry > 0 { res = append([]string{string(carry + '0')}, res...) } // 反转字符数组,得到最终结果 return reverse(strings.Join(res, "")) } // 字符串反转函数 func reverse(s string) string { runes := []rune(s) for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 { runes[i], runes[j] = runes[j], runes[i] } return string(runes) } func main() { fmt.Println(add("12345678901234567890", "98765432109876543210")) }