GO语言实现小技巧

1.使用go实现左右读都一样

func process(str string) bool  {
	t:=[]rune(str)
	length := len(t)
	for i,_ :=range t{
		if i == length/2{
			break
		}
		last := length-i -1
		if t[i] !=t[last]{
			return false
		}

	}
	return true
}

func main()  {
   var str string
   fmt.Scanf("%sd",&str)
   if process(str){
      fmt.Println("yes")
   }else {
      fmt.Println("no")
   }
}

2.使用go语言实现因子之和等于他本身(完数)

func perfect(n int)bool{
	var sum int = 0
	for i:=1;i<n;i++{
		if n%i ==0{
			sum+=i
		}
	}
	return  n == sum
}
func process(n int)  {
	for i:=1;i<n+1;i++{
		if perfect(i){
			fmt.Println(i)
		}
	}

}
func main()  {
   var n int
   fmt.Scanf("%d",&n)
   process(n)
   
}

3.go语言实现九九乘法表

func multi(){
	for i:=0;i<9;i++{
		for j:=0;j<=i;j++{
			fmt.Printf("%d*%d=%d	",(i+1),j+1,(i+1)*(j+1))
		}
		fmt.Println()
	}

}
func main(){
    multi
}

4.输入一行字符,分别统计字母数字空格及其他字符的个数

func count(str string)(worldCount,spaceCount,numberCount,otherCount int)  {
	c :=[]rune(str)
	for _,v := range c{
		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
}
func main()  {
	reader := bufio.NewReader(os.Stdin)
	result,_,err := reader.ReadLine()
	if err != nil{
		fmt.Println("read from console err:",err)

	}
	wc,sc,nc,oc := count(string(result))
	fmt.Printf("world count:%d
space count:%d
number count:%d
other count:%d
",wc,sc,nc,oc)
}

5.利用字符串计算大数值的数字之和

func multi(str1,str2 string) (result string)  {
	if len(str1) == 0 && len(str2) == 0{
		result = "0"
		return
	}
	var index1 = len(str1)-1
	var index2 = len(str2)-1
	//用left记录进位
	var left int
	for index1 >=0 && index2 >=0 {
		//利用ASCII码来计算实际值,

		c1 :=str1[index1] - '0'

		c2 :=str2[index2] - '0'

		//c1和c2和left类型不一致,需要转成一致
		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 := str1[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{
		c1 := str2[index2]-'0'
		sum := int(c1) +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
}

func main()  {
	reader := bufio.NewReader(os.Stdin)
	result ,_,err :=reader.ReadLine()
	if err != nil{
		fmt.Println("read from console err:",err)
		return
	}
	strSlice := strings.Split(string(result),"+")
	if len(strSlice) !=2{
		fmt.Println("please input a+b")
		return
	}
	strNumber1 := strings.TrimSpace(strSlice[0])
	strNumber2 := strings.TrimSpace(strSlice[1])
	fmt.Println(multi(strNumber1,strNumber2))
}
原文地址:https://www.cnblogs.com/mqhpy/p/13469852.html