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.方法和函数的区别,面向对象应用实例