Go语言基础之结构体、接口

本文深入探讨了Go语言中接口与结构体的概念及应用,解析了接口的实现机制,以及如何通过结构体实现具体的功能。文章通过实例展示了如何定义接口与结构体,以及如何在结构体中实现接口所规定的方法。
package main

import (
    "fmt"
)

# 定义Human类型的接口必须实现xx和toS..的方法, 否则编译失败, 这有点像抽象类的意思, 写python多了对这点不太注意。。
type Human interface {
    xx() string
    toStudyKnowledge() string
}  

# 定义一个结构体 Student , 结构体的属性如下(如何设置默认值? 看样子没有直接的去定义一个默认值的方法, 
后期只能通过函数或者第三方包去实现这个功能吧!) 这个就和Python的类相似了, 
type Student struct {
    id int
    name string
    age int
    sex bool
}

# Python是面向对象的, 对象下面就会有各种各样的方法, GO是面向接口的, 定义了结构体以后,
 对于接口必须实现的函数就必须针对每个不同的结构体去实现接口已经声明了的方法, 这就相当于类方法。
func (ab *Student) xx() string {
    return fmt.Sprintf("我的学号:%v, 名字是%v, 年龄%v, 性别%v", ab.id,ab.name,ab.age,ab.sex)
}

func(ab *Student) toStudyKnowledge() string {
    fmt.Println(fmt.Sprintf("我是李大大, 我的学号是%v, 我呀要去上数学课了", ab.id))
    return ""
}

func main() {
    var s Human	# 声明s是一个接口变量
    // 当定义接收者为指针时,相当于是传引用调用,所以必须用指针作为接收者。
    // 如果接收者不是指针的话,则即可以利用传值也可以利用传引用, 上面定义的接受者是指针
    s = &Student{id: 1, name: "lucky", age: 15, sex: false}	# 对接口变量进行赋值(必须实现了接口里面的方法的结构体才行), 初始化结构体,  这里接口变量必须接收指针
    fmt.Println(s.xx())
    s.toStudyKnowledge()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值