一起来学GO语言5--GO语言练习

前面学习了go的基础知识,这里做一些练习,来巩固我们所学知识,请看下面题目

1、字符串去除空格和换行符
2、判断一个数是偶数
3、寻找100以内的所有素数
4、99乘法口诀表
5、杨辉三角
6、将学生成绩分为A(90分以上)、B(60-90)、C(小于60),使用switch语句编写
7、定义一个结构体,包含X和Y两个坐标,带入函数,求两点之间的距离
8、使用iota常量生成器,生成一个星期的常量,用1到7来进行表示
9、定义两个slice,进行比较(slice是不能直接进行比较的,数组可以)
10、定义一个map,key是学生名称,value是学生的成级,写一个函数无返回值,参数为指针类型的数组,数组存放学生名称,遍历数组查找map中的对应学生的成绩,找不到或者成绩小于60分时,删除数组中对应的学生

实现源码:

// stydy project main.go
package main

import (
	"fmt"
	"math"
	"strings"
)

//去除字符串中的空格和换行
func replaceStr() {
	s := "a  bcd   \naaa3355\n pbc"
	//strings.Replace(s, old, new, index)  返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。
	s = strings.Replace(s, " ", "", -1)
	s = strings.Replace(s, "\n", "", -1)
	fmt.Println(s)
}

//判断一个数是否是偶数
func judgeEvenNum(s int) {
	//能被2除尽的数为偶数
	if s%2 == 0 {
		fmt.Printf("%d是偶数\n", s)
	} else {
		fmt.Printf("%d是奇数\n", s)
	}

}

//1到100以内的所有素数, 只能被1和自身除尽的数为素数
func primeNumber() {
	flag := true
	for i := 1; i <= 100; i++ {
		for j := 1; j <= i; j++ {

			if i%j == 0 && j > 1 && j < i {
				flag = false
				break
			}
		}
		if flag {
			fmt.Println(i)
		}
		flag = true
	}
}

//打印99乘法口诀表
func printMultTable() {
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d\t", i, j, i*j)
		}
		fmt.Println()
	}
}

//杨辉三角
func ShowYangHuiTriangle(rows int) {
	nums := make([]int, rows)
	for i := 0; i < rows; i++ {
		//补空白
		for j := 0; j < (rows - i); j++ {
			fmt.Print(" ")
		}
		for j := 0; j < (i + 1); j++ {
			var length = len(nums)
			var value int
			if j == 0 || j == i {
				value = 1
			} else {
				value = nums[length-i] + nums[length-i-1]
			}
			nums = append(nums, value)
			fmt.Print(value, " ")
		}
		fmt.Println("")
	}
}

//将学生成绩分为A(90分以上)、B(60-90)、C(小于60),使用switch语句编写
func studentPerformance(score int) string {
	var result string
	switch {
	case score >= 90:
		result = "A"
	case score >= 60 && score < 90:
		result = "B"
	case score < 60:
		result = "C"
	default:
		result = "unknow"
	}
	return result
}

//定义一个结构体,包含X和Y两个坐标,带入函数,求两点之间的距离
//p1 := Point{X: 8, Y: -7}
//p2 := Point{1, 2}
//b, err := getDistance(p1, p2)
//if err == nil {
//	fmt.Println(b)
//} else {
//	fmt.Println(err)
//}
type Point struct {
	X float64
	Y float64
}

func getDistance(p1, p2 Point) (float64, error) {
	if p1.X < 0 || p1.Y < 0 || p2.X < 0 || p2.Y < 0 {
		return -1, fmt.Errorf("point error")
	}
	return math.Pow(p1.X-p2.X, 2) - math.Pow(p1.Y-p2.Y, 2), nil
}

//8、使用iota常量生成器,生成一个星期的常量,用1到7来进行表示
//fmt.Println(Sunday) 7
const (
	_ int = iota
	Monday
	Tuesday
	Wednesday
	Thursday
	Firday
	Staurday
	Sunday
)

//9、定义两个slice,进行比较(slice是不能直接进行比较的,数组可以)
//arr1 := []int{1, 2, 3, 4, 5}
//arr2 := arr1[:]
//b := compareSlice(arr1, arr2)
//fmt.Println(b)  true
func compareSlice(arr1, arr2 []int) bool {
	//第一步用长度比较
	if len(arr1) != len(arr2) {
		return false
	}
	//当长度相当的时候,遍历slice,比较元素
	for i, _ := range arr1 {
		if arr1[i] != arr2[i] {
			return false
		}
	}
	return true
}

//10、定义一个map,key是学生名称,value是学生的成级,写一个函数无返回值,
//参数为指针类型的数组,数组存放学生名称,遍历数组查找map中的对应学生的成绩,找不到或者成绩小于60分时,删除数组中对应的学生
//	sarr := []string{"jack", "rose", "go", "java"}
//	smap := map[string]int{"python": 80, "java": 70, "rose": 59}
//	searchStu(&sarr, smap)
//	fmt.Println(sarr)
func searchStu(sarr *[]string, smap map[string]int) {
	for i, name := range *sarr {
		score, ok := smap[name]
		if !ok && score < 60 {
			remove(sarr, i)
		}
	}
}

func remove(arr *[]string, i int) {
	var temp []string = *arr
	for j := i; j < len(temp)-1; j++ {
		temp[j] = temp[j+1]
	}
	*arr = temp[:len(temp)-1]
}

func main() {

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值