[go学习笔记.第十章.面向对象编程] 5.方法的练习

    package main

    import(
        "fmt"
    )

    //结构体:MethodUtils
    type MethodUtils struct{

    }
    //方法:Print(),不需要参数,在方法中打印10*8的矩形,在main函数中调用该方法
    func (methodUtils MethodUtils) Print() {
        for i := 1; i <= 10; i++{
            for j:=1; j <= 8; j++{
                fmt.Print("*")
            }
            fmt.Println()
        }
    }
    //方法:PrintBy(),提供m,n两个参数,方法中打印m*n的矩形
    func (methodUtils MethodUtils) PrintBy(m int, n int) {
        for i := 1; i <= m; i++{
            for j:=1; j<=n;j++{
                fmt.Print("*")
            }
            fmt.Println()
        }
    }
    //方法:area(),计算该矩形的面积,(可接收长度len,宽度width),
    //将其作为方法返回值,在main中调用接收面积并打印出来
    func (mu MethodUtils) area(len float64, width float64) float64 {
        area := len * width
        return area
    }
    //方法:JudgeNum(),判断是奇数还是偶数
    func (mu *MethodUtils) JudgeNum(num int)  {
        if num % 2 == 0 {
            fmt.Printf("%v是偶数\n", num)
        } else {
            fmt.Printf("%v是奇数\n", num)
        }
    }
    //方法:Print2()根据行,列,字符打印对应行数和列数的字符,
    //eg:行 3 ,列 2, 字符 * ,则打印相应的效果
    func (mu MethodUtils) Print2(m int, n int, key string) {
        for i := 1; i <= m; i++{
            for j:=1; j<=n;j++{
                fmt.Print(key)
            }
            fmt.Println()
        }
    }

    //定义一个计算器结构体(Calcuator),实现加减乘除四个功能
    //实现形式1:分四个方法完成
    //实现形式2:一个方法搞定
    type Calcuator struct{
        Num1 float64
        Num2 float64
    }

    func (ca *Calcuator) getSum() float64 {
        sum := ca.Num1 + ca.Num2
        return sum
    }

    func (ca *Calcuator) getRes(key byte) float64 {
        res := 0.0
        switch key {
        case '+':
            res = ca.Num1 +  ca.Num2
        case '-':
            res =  ca.Num1  -  ca.Num2 
        case '*':
            res=  ca.Num1  *  ca.Num2 
        case '/':
            res =  ca.Num1  /  ca.Num2 
        default:
                fmt.Println("参数错误") 
        }

        return res
    }

    func main()  {
        /**
        编写一个结构体,MethodUtils,编写一个方法,不需要参数,在方法中打印10*8的矩形,在main函数中调用该方法
        */
        var mu MethodUtils
        mu.Print()

        /**
        编写一个方法,提供m,n两个参数,方法中打印m*n的矩形
        */
        mu.PrintBy(3, 4)

        /**
            编写一个方法,计算该矩形的面积,(可接收长度len,宽度width)
            将其作为方法返回值,在main中调用,接收面积并打印出来
        */
        area := mu.area(10,30)
        fmt.Println("area=", area)

        //编写一个方法,判断是奇数还是偶数
        mu.JudgeNum(10)
        //根据行,列,字符打印对应行数和列数的字符,eg:行 3 ,列 2, 字符 * ,则打印相应的效果
        mu.Print2(3,2, "@")

        /**
            定义一个计算器结构体(Calcuator),实现加减乘除四个功能
            实现形式1:分四个方法完成
            实现形式2:一个方法搞定
        */
        var ca Calcuator
        ca.Num1 = 1.1
        ca.Num2 = 1.2
        sum := ca.getSum()
        fmt.Printf("%v+%v=%v\n", ca.Num1, ca.Num2, fmt.Sprintf("%.2f", sum))
        res := ca.getRes('+')
        fmt.Println(res)
    }
    package main

    import(
        "fmt"
    )
    
    //MethodUtils结构体
    type MethodUtils struct{

    }
    //从键盘接收整数1~9,打印对应的乘法表
    func (mu MethodUtils) Print3(){
        fmt.Println("请输入1~9的数字:")
        var num int
        fmt.Scanln(&num)
        for i := 1; i <= num; i++ {
            for j := 1; j <= i; j++ {
                fmt.Printf("%v * %v = %v \t", i, j, i * j)
            }
            fmt.Println()
        }
    }

    type Calcuator struct{
        Num1 float64
        Num2 float64
    }

    //使给定的一个二维数组3x3转置
    func (ca Calcuator) getArr(arr [3][3]int) (res1 [3][3]int) {
        var res [3][3]int
        for i := 0; i < 3; i++ {
            for j := 0; j < 3; j++ {
                res[j][i] = arr[i][j]
            }
        }

        return res
    }

    func main()  { 
        //在MethodUtils结构体中编写一个方法,从键盘接收整数1~9,打印对应的乘法表
        mu.Print3()

        //编写一个方法:使给定的一个二维数组3x3转置:
        /**
            1 2 3   1 4 7 
            4 5 6 =>2 5 8 
            7 8 9   3 6 9
        */
        arr := [3][3]int{
            {1,2,3},
            {4,5,6},
            {7,8,9},
        }
        fmt.Println(ca.getArr(arr))       
    }

[上一节][go学习笔记.第十章.面向对象编程] 4.方法介绍,使用,调用,传参机制和方法的声明,定义剖析以及注意事项

[下一节][go学习笔记.第十章.面向对象编程] 6.方法和函数的区别,面向对象应用实例 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值