2024年最全【Go语言刷题篇】Go完结篇 函数、结构体、接口(1),驱动核心源码详解和Binder超系统学习资源

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

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

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方法。


相关知识:  
 1、 在Go语言中接口(interface)是一种类型,一种抽象的类型。interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就像是定义一个协议(规则), 只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。  
 2、接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。面向接口编程  
 3、接口是一个或多个方法签名的集合。  
 4、任何类型的方法集中只要拥有该接口’对应的全部方法’签名。就表示它 “实现” 了该接口,无须在该类型上显式声明实现了哪个接口。这称为Structural Typing。所谓对应方法,是指有相同名称、参数列表 (不包括参数名) 以及返回值。当然,该类型还可以有其他方法。  
 5、接口只有方法声明,没有实现,没有数据字段。接口可以匿名嵌入其他接口,或嵌入到结构中。  
 6、type 接口类型名 interface{  
 方法名1( 参数列表1 ) 返回值列表1  
 方法名2( 参数列表2 ) 返回值列表2  
 …  
 }


示例输入:无  
 示例输出:



sleep
eat


案例代码:



import “fmt”
type animal interface {
sleep()
eat()
}
type tiger struct {
}

func (t tiger) sleep() {
fmt.Println(“sleep”)
}
func (t tiger) eat() {
fmt.Println(“eat”)
}
func main() {
var t animal = tiger{}
t.sleep()
t.eat()
}


## Q7:错误-网络延迟


问题描述:实现erro接口,自定义一个错误,该错误抛出"网络延迟"错误。输入网络的延迟数,如果延迟数大于100则认为网络延迟,并返回


相关知识:  
 1、 错误:Go 语言通过内置的错误接口提供了非常简单的错误处理机制。



type error interface {
Error() string
}


2、实现 error 接口类型来生成错误信息,函数通常在最后的返回值中返回错误信息。使用errors.New 可返回一个错误信息


示例输入:150  
 示例输出:“网络延迟”


案例代码:



import “errors”
type error interface {
Error() string
}
func Error() string {
return “网络延迟”
}
func defineerr(ping int) string {
// write code here
if ping > 100 {
errors.New(“网络延迟”)
return “网络延迟”
}
return “”
}


## Q8:错误-体温异常


问题描述:实现一个函数,该函数的功能是 给定一个float类型变量表示某个人的体温,如果有人体温大于37.5,抛出"体温异常",并输出。


相关知识:  
 1、Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。


示例输入:38.000000  
 示例输出:“体温异常”


案例代码:



//import “fmt”
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* @param t double浮点型 体温
* @return string字符串
*/
func temperature(t float64) (ans string) {
// write code here
ans = “”
defer func() {
err := recover()
if err != nil {
ans = “体温异常”
}
}()

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

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

[外链图片转存中…(img-tl4gBJtu-1715635869462)]
[外链图片转存中…(img-LAdvDPxy-1715635869462)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值