开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:方法课堂练习题(1)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9680
方法课堂练习题(1)
内容介绍:
一、习题1
二、习题2
三、习题3
一、习题1
编写结构体 (MethodUtils),编程一个方法,方法不需要参数,在方法中打印一个10*8的矩形,在 main 方法中调用该方法。
在 Exercise 文件夹中新建一个文件 methodexercise02,并创建 main.go。输入共用代码:
package main
import (
"fmt""
)
Func main(){
}
输入 type MethodUtils struct,创建 MethodUtils 结构体,该结构体有方法但是没有字段,这也是可以的。给 MethodUtils 编写方法,方法的名字题目中没有要求,但是题目要求方法不需要参数,在方法中打印10*8的一个矩形,并在 main 方法中完成调用,由于没有参数,有没有返回值,即只需要完成打印的任务,此题比较容易完成。首先输入 func (mu MethodUtils) Print() {} 完成与 MethodUtils 的绑定,然后进行两次 for 循环,for i:=1;i<=10;i+t {for j:1;j<=8;j++{,然后输出,fmt.Print(""*")},输入 fmt.Println(),完成换行。在 main 函数中完成调用,首先要有一个 MethodUtils 变量,输入 var mu MethodUti1s,再输入 mu.Print()进行调用测试,cd 到 methodexcercise02,然后 run main.go,可以看到打印出一个10*8的矩形。
核心代码:
package main
import(
"fmt"
)
type MethodUtils struct {
}
func (mu MethodUti1s) Print(){
for i =1;i<= 10; i++ {
for j :=1;j<=8;j++{
fmt.Print("*")
}
fmt.Print1n()
}
}
func main(){
var mu MethodUti1s
mu.Print()
fmt.Println()
}
二、习题2
编写一个方法,提供m和n两个参数,方法中打印一个m*n的矩形
本题练习接收两个参数。参数m和n分别代表行和列,而行和列肯定是整数,故 m、n均为 int 型。其实此题我们只需要在习题1的前提下稍加改动即可。将习题1中 for i =1;i<= 10; i++ {for j :=1;j<=8;j++{ 分别改成 for i =1;i<= m; i++ { for j :=1;j<=n;j++{,调用时还是要创建 MethodUti1s 结构体变量,输入 var mu MethodUti1 mu.Print()fmt.Println(2,6)
,传入2,6打印出二行六列的矩形.为了加以区分,可以输入 fmt.println() 进行换行。
核心代码:
package main
import(
"fmt"
)
type MethodUtils struct {
}
func (mu MethodUti1s) Print2(){
for i =1;i<= m; i++ {
for j :=1;j<=n;j++{
fmt.Print("*")
}
fmt.Print1n()
}
}
func main(){
var mu MethodUti1s
fmt.println()
mu.Print2(2,6)
}
三、习题3
编写一个方法并计算该矩形的面积(可以接收长 len 和宽 width),将其作为方法返回值。在 main 方法中调用该方法,接快返回的面积值并打印。
此题在前两题的基础上增加了返回值,需要得到面积。输入 func (mu Methodutils)area(len float64, width float64)(float64){ 完成绑定,即先将结构体的类型拷贝过来,长度、宽度可能是小数,所以最好是 float64,返回类型肯定也是float64,如果是返回值只有一个,括号可加可不加。面积的输出也非常简单,即return len*width,输入:
areaRes := mu. area(2.5,8.7)fmt.Print1n(“面积为=” areaRes)
完成调用,结果为21.75,与理论结果一致。
核心代码:
func (mu Methodutils)area(len float64, width float64)(float64){
return len*width
}
areaRes := mu. area(2.5,8.7)fmt.Print1n(“面积为=”, areaRes)