Go学习(1):基本语法简单应用
程序员文章站
2022-03-07 15:27:54
今天开始学Go了,技多不压身 基本语法大体来说感觉是:Python和Java的融合 具体的基本语法就不写了,大概写个简易的算法熟悉下这个语言 大数相加Go实现: package main import ( "bufio" "fmt" "os" "strings" ) /** 大数相乘 */ func ......
今天开始学go了,技多不压身
基本语法大体来说感觉是:python和java的融合
具体的基本语法就不写了,大概写个简易的算法熟悉下这个语言
大数相加go实现:
package main import ( "bufio" "fmt" "os" "strings" ) /** 大数相乘 */ func input() string { //输入 reader := bufio.newreader(os.stdin) result, _, err := reader.readline() if err != nil { fmt.println("read from console err:", err) os.exit(0) } return string(result) } func split(input string) (first string, second string) { //分割输入 strslice := strings.split(input, "+") if len(strslice) != 2 { fmt.println("input error") os.exit(0) } else { first = strings.trimspace(strslice[0]) second = strings.trimspace(strslice[1]) if first == "" || second == "" { fmt.println("input error") os.exit(0) } } return } func printresult(first, second, result string) { //打印结果 fmt.printf("%s + %s = %s\n", first, second, result) } func add(str1, str2 string) (result string) { //大数相加 if len(str1) == 0 && len(str2) == 0 { result = "0" } else { //从个位开始 index1 := len(str1) - 1 index2 := len(str2) - 1 //carry表示进位 carry := 0 //从各位开始依次相加 for index1 >= 0 && index2 >= 0 { //ascii码相减得出数值 c1 := str1[index1] - '0' c2 := str2[index2] - '0' //模拟人算带进位相加 sum := int(c1) + int(c2) + carry //进位处理 if sum >= 10 { carry = 1 } else { carry = 0 } //得出项加后每一位的值 c3 := (sum % 10) + '0' //拼接字符串 result = fmt.sprintf("%c%s", c3, result) index1-- index2-- } //第一个数的位数比第二个多的时候执行 for index1 >= 0 { //原理和上面类似 c1 := str1[index1] - '0' sum := int(c1) + carry if sum >= 10 { carry = 1 } else { carry = 0 } c3 := (sum % 10) + '0' result = fmt.sprintf("%c%s", c3, result) index1-- } //第二个数的位数比第一个多的时候执行 for index2 >= 0 { c1 := str2[index2] - '0' sum := int(c1) + carry if sum >= 10 { carry = 1 } else { carry = 0 } c3 := (sum % 10) + '0' result = fmt.sprintf("%c%s", c3, result) index2-- } //处理最终进位 if carry == 1 { result = fmt.sprintf("1%s", result) } } return } func main() { //输入两个数 first, second := split(input()) //得到相加结果 result := add(first, second) //打印 printresult(first, second, result) }
测试:
上一篇: C语言学习(1)