zoukankan      html  css  js  c++  java
  • 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))
    }
    
  • 相关阅读:
    mysql "The user specified as a definer ('root'@'%') does not exist" 问题
    mysql添加Federated引擎问题
    D7经典脚本[multi/handler]
    redhat7.4安装vertica-9.1.0教程
    批量在当前目录下所有的文件中添加指定字段
    mysql 水平分表技术
    linux普通用户提权
    两步完成利用procdump64+mimikatz获取win用户密码
    hibernate中对象的三种状态分析
    Hibernate 入门案例
  • 原文地址:https://www.cnblogs.com/mqhpy/p/13469852.html
Copyright © 2011-2022 走看看