- 面向对象编程
- 匿名字段
- 匿名字段初始化
- 方法
- 值语义与引用语义
- 封装,继承,多态
- 方法值,方法表达式
- 接口
- 接口继承,接口转换
- 空接口
- 通过if实现类型断言
- 通过switch实现类型断言
package main
import (
"fmt"
)
func Out(data ...interface{}) {
i := make([]interface{}, len(data))
for j, datum := range data {
i[j] = datum
}
for _, value := range data {
if value01, result := value.(int); result == true {
fmt.Printf("这里是一个int : %v", value01)
} else {
switch value.(type) {
case string:
fmt.Printf("这里是一个string : %v", value)
case Student:
fmt.Printf("这里是一个Student : %v", value)
default:
fmt.Printf("未知类型: %T , 值: %v", value)
}
}
fmt.Println(value)
}
}
type Person struct {
name string
sex byte
age int
}
type Student struct {
Person
id int
addr string
}
var p Person
var s Student
var s1 Student
func (student Student) DemoStudentV() {
Out("this is demo student")
}
func (student *Student) DemoStudentP() {
Out("this is demo student")
}
func (person Person) DemoPerson() {
Out(person, "this is demo person")
}
type Inter interface {
Test()
}
type Inter01 interface {
Inter
Test01()
}
type Inter02 interface {
Inter
Inter01
Test02()
}
func (penson Person) Test() {
Out("person 实现了接口 inter")
}
func (student Student) Test02() {
Out("student 实现了接口 inter2")
}
func (student Student) Test03() Student {
Out("student Test03")
return student
}
func Anyone(inter Inter) {
inter.Test()
}
func main() {
func() {
var i Inter
i = p
i.Test()
i = s
i.Test()
Anyone(i)
Anyone(p)
iTest := s.Test03
iTest01 := Student.Test03
iTest01(s)
Anyone(iTest())
}()
func() {
s = Student{
Person: Person{"xiaoming", 'n', 10},
id: 0,
addr: "",
}
s2 := Student{
Person: Person{},
id: 0,
addr: "",
}
Out(s, s2)
s1 = s2
s.DemoStudentP()
(&s).DemoStudentV()
}()
func() {
p.DemoPerson()
s1.DemoPerson()
s1.Person.DemoPerson()
p1 := new(Person)
fmt.Printf("%T\n", p1)
}()
}
这里是一个string : person 实现了接口 interperson 实现了接口 inter
这里是一个string : person 实现了接口 interperson 实现了接口 inter
这里是一个string : person 实现了接口 interperson 实现了接口 inter
这里是一个string : person 实现了接口 interperson 实现了接口 inter
这里是一个string : student Test03student Test03
这里是一个string : student Test03student Test03
这里是一个string : person 实现了接口 interperson 实现了接口 inter
这里是一个Student : {{xiaoming 110 10} 0 }{{xiaoming 110 10} 0 }
这里是一个Student : {{ 0 0} 0 }{{ 0 0} 0 }
这里是一个string : this is demo studentthis is demo student
这里是一个string : this is demo studentthis is demo student
未知类型: main.Person , 值: %!v(MISSING){ 0 0}
这里是一个string : this is demo personthis is demo person
未知类型: main.Person , 值: %!v(MISSING){ 0 0}
这里是一个string : this is demo personthis is demo person
未知类型: main.Person , 值: %!v(MISSING){ 0 0}
这里是一个string : this is demo personthis is demo person
*main.Person
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!