【Go语言刷题篇】Go完结篇 函数、结构体、接口、错误入门学习_go 刷题

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

前言

- 本期是学习Golang的完结篇:函数、结构体、接口、错误入门学习,有不懂的地方可以评论进行讨论!

  • 接下来我将继续更新Python刷题系列、数据库从0到入门刷题系列等等。
  • 本系列文章采用牛客的核心代码模式进行案例代码提供,帮助大家从0到入门的学习过程中进行配套的刷题~
  • 推荐给大家一款刷题、面试的神器,我也是用这一款神器进行学习的!~链接如下:刷题神器跳转链接
  • 该神器不仅网页界面十分美观,而且操作起来极易上手入门!非常适合新手进行系统性的学习!
  • 小白新手可以通过该神器进行日常的刷题、看大厂面经、学习计算机基础知识、与大牛面对面沟通~ 刷题的图片已经放在下面了~
    在这里插入图片描述

Q1:函数-数字的阶乘

问题描述:一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

相关知识:
1、递归,就是在运行的过程中调用自己。 一个函数调用自己,就叫做递归函数。构成递归需具备的条件:子问题须与原始问题为同样的事,且更为简单。不能无限制地调用本身,须有个出口,化简为非递归状况处理。

实例输入:2
实例输出:2

案例代码:

//import "fmt"
/\*\*
 \* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 \* @param i int整型 数字
 \* @return int整型
\*/
func factorial( i int ) int {
	// write code here
	if i == 0{
		return 1
	}
	return i \* factorial(i-1)
}


Q2:函数-绝对值

问题描述:定义一个函数,函数的功能是给出一个数,返回该数的绝对值。

相关知识:
1、函数的定义: 函数声明包含一个函数名,参数列表, 返回值列表和函数体。如果函数没有返回值,则返回列表可以省略。函数从第一条语句开始执行,直到执行return语句或者执行函数的最后一条语句。函数可以没有参数或接受多个参数。注意类型在变量名之后 。当两个或多个连续的函数命名参数是同一类型,则除了最后一个类型之外,其他都可以省略。函数可以返回任意数量的返回值。使用关键字 func 定义函数,左大括号依旧不能另起一行。

func function\_name( [parameter list] ) [return_types] {
   函数体
}

2、函数的调用:当创建函数时,你定义了函数需要做什么,通过调用该函数来执行指定任务。调用函数,向函数传递参数,并返回值
3、Go 函数可以返回多个值,"_"标识符,用来忽略函数的某个返回值Go 的返回值可以被命名,并且就像在函数体开头声明的变量那样使用。返回值的名称应当具有一定的意义,可以作为文档使用。没有参数的 return 语句返回各个返回变量的当前值。

实例输入:-1
实例输出:1

案例代码:

//import "fmt"
/\*\*
 \* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 \* @param x int整型 
 \* @return int整型
\*/
func absfunc(x int) int {
	// write code here
	if x < 0 {
		return -x
	}
	return x
}

Q3:函数-加减乘除

问题描述:定义一个函数,实现输入a,b两个数,返回两数的和,差,乘积,商,余数。然后依次存入切片中,最后返回。

相关知识:
1、Go中函数支持多个返回值,但函数有多个返回值时,如果其中某个或某几个返回值不想使用,可以通过下划线_来丢弃这些返回值。例如下面的f1函数两个返回值,调用该函数时,丢弃了第二个返回值b,只保留了第一个返回值a赋值给了变量a。

实例输入:2,2
实例输出:[4,0,4,1,0]

案例代码:

//import "fmt"
/\*\*
 \* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 \* @param a int整型 
 \* @param b int整型 
 \* @return int整型一维数组
\*/
func operate( a int ,  b int ) []int {
	// write code here
	var ans []int
	ans = append(ans, a+b)
	ans = append(ans, a-b)
	ans = append(ans, a\*b)
	ans = append(ans, a/b)
    ans = append(ans, a % b)
	return ans
}

Q4:结构体-学生信息1

问题描述:每个学生都有如下信息:姓名name,性别sex,年龄age,分数score,定义一个结构体Student,来表示小明的信息,小明的信息如下:姓名:小明,性别:true,年龄:23,分数:88

相关知识:
1、Go语言中的基础数据类型可以表示一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体,英文名称struct。 也就是我们可以通过struct来定义自己的类型了。
2、结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和一个类型。
3、结构体的目的就是把数据聚集在一起,以便能够更加便捷地操作这些数据。
4、结构体的定义:结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:
type 类型名 struct {
字段名 字段类型
字段名 字段类型

}
类型名:标识自定义结构体的名称,在同一个包内不能重复。
字段名:表示结构体字段名。结构体中的字段名必须唯一。
字段类型:表示结构体字段的具体类型。
5、访问结构体的成员:如果要访问结构体成员,需要使用点号 . 操作符。

示例输入:无
示例输出:

小明
true
23
88

案例代码:

import "fmt"
type stu struct {
	name  string
	sex   bool
	age   int
	score int
}
func main() {
	a := stu{
		name:  "小明",
		age:   23,
		sex:   true,
		score: 88,
	}
	fmt.Println(a.name)
	fmt.Println(a.sex)
	fmt.Println(a.age)
	fmt.Println(a.score)
}


Q5:结构体-学生信息2

问题描述:每个学生都有如下信息:姓名name,性别sex,年龄age,分数score,地址信息address,其中address地址信息又包含城市city,省份province等信息, 定义一个结构体Student,来表示小明的信息,小明的信息如下:姓名:小明,性别:true,年龄:23,分数:88,province:湖南省,city:长沙市。
依次输出打印小明信息

相关知识:
1、一个结构体中可以嵌套包含另一个结构体或结构体指针。

示例输入:
示例输出:

小明
true
23
88
湖南省
长沙市

案例代码:

import (
	"fmt"
)
type address struct {
	city     string
	prov\*\*\*ring
}
type stu struct {
	name  string
	sex   bool
	age   int
	score int
	add   address
}
func main() {
	a := stu{
		name:  "小明",
		age:   23,
		sex:   true,
		score: 88,
		add: address{
			city:     "长沙市",
			province: "湖南省",
		},
	}
	fmt.Println(a.name)
	fmt.Println(a.sex)
	fmt.Println(a.age)
	fmt.Println(a.score)
	fmt.Println(a.add.province)
	fmt.Println(a.add.city)
}

Q6:接口-动物和老虎

问题描述:定义一个动物接口,该接口有 sleep,eat 方法,定义老虎实现动物接口,老虎的sleep方法输出"tiger sleep",eat方法输出"tiger eat",最后依次调用老虎的sleep,eat方法。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

714986820080)]
[外链图片转存中…(img-J71FHlP7-1714986820081)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值