函数课堂练习 | 学习笔记

简介: 简介:快速学习函数课堂练习

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map :函数课堂练习】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9604


函数课堂练习

 

一、函数注意事项和细节讨论

1、课堂练习题:

(1) 习题1:

func sum(n1, n2 float32 ) float32 {

fmt.Printf("n1 type = %T\n", n1)

//n1 type = float32

return n1+n2

}

func main() {

fmt.Println("sum=", sum(1,2))// sum = 3

}

问:题1的代码有无错误,它输出什么?

解:代码无错误,输出 sum = 3。

习题解析:

main 函数中调用 sum(1,2) 在 sum 中调用形参 n1,n2 float32,返回一个 float32,这种用法与定义多个变量的用法是相同的。如果 n1 和 n2 的数据类型相同的话,n1后面的数据类型可以省略,只需在最后写上数据类型即可。在这道习题中 n1和 n2都为 float32 的数据类型,本题输出的是n1的数据类型是什么,再返回 n1+n2 的值。输出的是 n1,返回的 n1+n2=3。

(2) 习题2:

type mySum func (int, int) int

func sum(n1 int, n2 int) int {

return n1+n2

}

func sum2(n1, n2, n3 int) int {

return n1+n2

}

//使用type自定义数据类型来简化定义

func myFunc(funcVar mySum,num1 int,num2 int) int{

return funcVar(num1, num2)

}

func main(){

a := sum

b := sum2

fmt.Println(myFunc(a,1,2)//ok

fmt.Println(myFunc(b,1,2))//error

}

问:题2:代码有无错误,为什么?

解:fmt.Println(myFunc(b,1,2) 错误,原因是类型不匹配。因为不能把 func sum2(n1, n2, n3 int) int这种函数类型赋给 func (int, int) int。只能接受2个形参而给了3个,类型不匹配。

习题解析:

把 sum 函数给 a 变量,sum2 给 b 变量,调用 myFunc(a,1,2)函数。mySum是一个自定义类型,有两个 int 的形参然后返回一个 int 。本题中把 sum 赋给了mySum 函数类型,myFunc b 中函数类型给了 myFunc ,但是 b 是 sum2,mySum接收的是两个 int 形参再返回一个 int ,但 b 中是3个 int 的形参再返回一个int,fmt.Println(myFunc(b,1,2))是错误的。

(3) 习题3:

请编写一个函数 swap(n1*int,n2*int)可以交换 n1 和 n2 的值。

在练习室中新建一个文件夹“exercise”,新建一个文件叫 main.go。通用的部分是包和引入包,将它复制到 main.go 文件夹中,它们的代码如下:

package main

import (

“fmt”

//请编写一个函数swap(n1*int,n2*int)可以交换n1和n2的值

func swap(n1*int,n2*int){

//定义一个临时变量

t:= *n1

*n1= *n2

*n2= t

}

func main() {

a :=10

b :=20

swap(&a,&b)//传入的地址

fmt.Printf(“a=%v,b=%v”,a, b)

}

习题解析:

新建一个文件叫 main.go 把导包引用过来,写一个主函数,根据题目要求 func swap(n1*int,n2*int) 定义一个临时变量 t ,把 n1 的值给 t ,然后再把 n2 的值给 n1,*n2的值给 t 。a:=10,b:=20调用 swap(&a,&b)传入的是地址,再输出 fmt.Printf(“a=%v,b=%v”,a ,b)

最后输出结果为 a=20,b=10。开始是 a=10,b=20,交换成功。注意一定要用指针的数据类型来传递,基本数据类型是通过指针传递的,指针传递在交换的时候对外面的数据没有影响,指针接受地址来进行相应的数据交换。

相关文章
|
C语言
C语言函数练习题详解
C语言函数练习题详解
67 1
|
存储 C语言
c语言学习第三课—简单介绍数组与操作符
c语言学习第三课—简单介绍数组与操作符
74 0
|
存储 人工智能 C++
C++学习笔记(十二)——String类练习题(下)
C++学习笔记(十二)——String类练习题(下)
C++学习笔记(十二)——String类练习题(下)
|
C语言
『C语言从入门到进阶』第 ② 期 - 循环语句
『C语言从入门到进阶』第 ② 期 - 循环语句
132 0
|
C语言
以计算学生成绩C语言数组函数的运用(源码)
以计算学生成绩C语言数组函数的运用(源码)
128 0
|
C语言
C语言for循环及if选择语句源码以学生成绩为例
#include <stdio.h> #include <stdlib.h> int main()
123 0
|
Java Scala 开发者
函数练习题|学习笔记
快速学习函数练习题。
函数练习题|学习笔记
|
网络协议 测试技术 Go
封装课堂练习讲解|学习笔记
快速学习封装课堂练习讲解
封装课堂练习讲解|学习笔记
|
开发者 Python
函数习题讲解2| 学习笔记
快速学习函数习题讲解2
函数习题讲解2| 学习笔记
|
开发者 Python
函数习题讲解1| 学习笔记
快速学习函数习题讲解1
函数习题讲解1| 学习笔记