Go基础(3)
程序员文章站
2022-10-05 09:23:17
demo1: 分析: 1.基本的99乘法表打印练习 demo2: 分析: 1.判断1-10000有哪些完数的练习 demo3: 分析: 1.判断是否是回文字符串的练习 2.尤其注意中文字符的处理,使用rune demo4: 分析: 1.读取一串输入并对字符进行技术的程序 2.对常用其他包的简单使用 ......
demo1:
package main import "fmt" func print() { for i := 1; i < 10; i++ { for j := 1; j <= i; j++ { fmt.printf("%d * %d = %d ", j, i, i*j) } fmt.println() } } func main() { print() }
分析:
1.基本的99乘法表打印练习
demo2:
package main import "fmt" func main() { const min int = 1 const max int = 10000 process(min, max) } func process(min, max int) { for i := min; i <= max; i++ { if perfect(i) { fmt.printf("%d是完数\n", i) } } } func perfect(n int) bool { var sum int = 0 for i := 1; i < n; i++ { if n%i == 0 { sum += i } } return n == sum }
分析:
1.判断1-10000有哪些完数的练习
demo3:
package main import "fmt" func main() { const str1 string = "helloolleh" const str2 string = "helloworld" process(str1) process(str2) const str3 string = "上海自来水来自海上" const str4 string = "我喜欢学习go" const str5 string = "go上海自来水来自海上og" essential(str3) essential(str4) essential(str5) } //可以正常处理英文字符串,无法处理中文 func process(str string) { var flag bool = true for i := 0; i < len(str); i++ { if i == len(str)/2 { break } last := len(str) - i - 1 if str[i] != str[last] { flag = false } } if flag { fmt.printf("%s 是回文字符串\n", str) } else { fmt.printf("%s 不是回文字符串\n", str) } return } //正常处理所有的字符串 func essential(str string) { tmp := []rune(str) lenth := len(tmp) var flag bool = true for i, _ := range tmp { if i == lenth/2 { break } last := lenth - i - 1 if tmp[i] != tmp[last] { flag = false } } if flag { fmt.printf("%s 是回文字符串\n", str) } else { fmt.printf("%s 不是回文字符串\n", str) } return }
分析:
1.判断是否是回文字符串的练习
2.尤其注意中文字符的处理,使用rune
demo4:
package main import ( "bufio" "fmt" "os" ) func main() { result := read() worldcount, spacecount, numbercount, othercount := count(result) fmt.printf("字母:%d\n空格:%d\n数字:%d\n其他字符:%d\n", worldcount, spacecount, numbercount, othercount) } func read() string { reader := bufio.newreader(os.stdin) result, _, err := reader.readline() if err != nil { fmt.println("read from console error:", err) return "" } return string(result) } func count(str string) (worldcount, spacecount, numbercount, othercount int) { tmp := []rune(str) for _, v := range tmp { switch { case v >= 'a' && v <= 'z': fallthrough case v >= 'a' && v <= 'z': worldcount++ case v == ' ': spacecount++ case v >= '0' && v <= '9': numbercount++ default: othercount++ } } return }
分析:
1.读取一串输入并对字符进行技术的程序
2.对常用其他包的简单使用
demo5:
package main import "fmt" func main() { var a string = "92233720368547758075" var b string = "129223372036854775807" result := bigintegeradd(a, b) fmt.printf("%s + %s = %s\n", a, b, result) } func bigintegeradd(a, b string) (result string) { if len(a) == 0 || len(b) == 0 { result = "0" return } var index1 int = len(a) - 1 var index2 int = len(b) - 1 var left int for index1 >= 0 && index2 >= 0 { c1 := a[index1] - '0' c2 := b[index2] - '0' sum := int(c1) + int(c2) + left if sum >= 10 { left = 1 } else { left = 0 } c3 := (sum % 10) + '0' result = fmt.sprintf("%c%s", c3, result) index1-- index2-- } for index1 >= 0 { c1 := a[index1] - '0' sum := int(c1) + left if sum >= 10 { left = 1 } else { left = 0 } c3 := (sum % 10) + '0' result = fmt.sprintf("%c%s", c3, result) index1-- } for index2 >= 0 { c2 := b[index2] - '0' sum := int(c2) + left if sum >= 10 { left = 1 } else { left = 0 } c3 := (sum % 10) + '0' result = fmt.sprintf("%c%s", c3, result) index2-- } if left == 1 { result = fmt.sprintf("1%s", result) } return }
分析:
1.go实现大数相加,面试常见问题
2.实现思想:人的思维,从个位依此加到最高位
demo6:
package main import "fmt" func test() int { defer func() { if err := recover(); err != nil { fmt.println(err) } }() b := 0 a := 100 / b return a } func main() { test() }
分析:
1.go没有try,catch语句,应该用这里的方式
demo7:
package main import "fmt" func test() { i := new(int) fmt.println(i) //0xc000012088 fmt.println(*i) //0 s1 := new([]int) *s1 = make([]int, 5) fmt.println(s1) //&[0 0 0 0 0] s2 := make([]int, 5) fmt.println(s2) //[0 0 0 0 0] (*s1)[0] = 100 s2[0] = 100 fmt.println(s1) //&[100 0 0 0 0] fmt.println(s2) //&[100 0 0 0 0] } func main() { test() }
分析:
1.make和new的区别练习
上一篇: 常用命令
下一篇: appium自动化环境搭建