大佬教程收集整理的这篇文章主要介绍了golang学习笔记[2] 面向对象OOP,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
// one project main.go package main import "fmt" //为int类型起个别名Integer type integer int func (a Integer) More(b Integer) Integer { return a - b } func Modify_arr(arr [3]int) { //数组是值类型,传进函数里面的是拷贝的那份 arr[0] = 500 } func Modify_slice(arr []int) { //切片是引用类型,传进函数里面可以直接修改 arr[0] = 500 } //定义Rect结构体 type Rect struct { x,y float64 width,Height Float64 } //为Rect结构体增加计算面积的方法 func (r *Rect) Area() float64 { return r.width * r.height } //创建初始化Rect的函数 func NewRect(x,y,width,Height Float64) *Rect { return &Rect{x,height} } //声明Base type Base struct { Name String } //为Base@L_618_6@funca和funcb func (base *BasE) funca() { fmt.Println("funca") } func (base *BasE) funcb() { fmt.Println("funcb") } //继承Base的Children type Children struct { Base Son String } //为children@L_618_6@funcc方法 func (children *Children) funcc() { fmt.Println("funcc") } //定义Flie结构体并实现四个方法 type File struct{} func (f *FilE) Read(buf []bytE) (n int,err error) { return n,err } func (f *FilE) Write(buf []bytE) (n int,err } func (f *FilE) Seek(off int64,whencE int) (pos int64,err error) { return pos,err } func (f *FilE) Close() error { return nil } //接口 type IFilE interface { Read(buf []bytE) (n int,err error) Write(buf []bytE) (n int,err error) Seek(off int64,err error) Close() error } type IReader interface { Read(buf []bytE) (n int,err error) } type IWriter interface { Write(buf []bytE) (n int,err error) } type IClosE interface { Close() error } //接口赋值 func (a Integer) Less(b Integer) bool { return a < b } func (a *Integer) Add(b Integer) { *a += b } //定义接口LessAdder type LessAdder interface { Less(b Integer) bool Add(b Integer) } func main() { //Integer拥有int类型所有的方法,且拥有int类型没有的Less和More方法 var v1 Integer = 1 //调用Interger的Less方法 if v1.Less(50) { fmt.Println(v1," less 50") } //测试数组 v2 := [3]int{1,2,3} Modify_arr(v2) fmt.Println(v2) //[1 2 3] //测试切片 v3 := []int{1,3} Modify_slice(v3) fmt.Println(v3) //[500 2 3] //测试new出来的结构体是什么类型 testRect1 := new(Rect) testRect1.x = 500 testRect2 := testRect1 testRect2.x = 300 fmt.Println(testRect1,testRect2) //&{300 0 0 0} &{300 0 0 0} //创建初始化Rect类型 rect1 := new(Rect) fmt.Println(rect1) rect2 := &Rect{} fmt.Println(rect2) rect3 := &Rect{0,100,200} fmt.Println(rect3) rect4 := &Rect{width: 200,height: 400} fmt.Println(rect4) rect5 := NewRect(20,20,200,200) fmt.Println(rect5) //Base base1 := &Base{"yunxuan"} base1.funca() base1.funcb() children1 := &Children{*base1,"peixuan"} children1.funca() children1.funcc() /* 实现了一个接口里面的方法就视为实现了这个接口 File实现了这些接口 */ var file1 IFile = new(FilE) file1.Close() var file2 IReader = new(FilE) file2.Read([]byte{}) var file3 IWriter = new(FilE) file3.Write([]byte{}) var v4 Integer = 1 var v5 LessAdder = &v4 v4.Add(v4) v5.Add(v4) }
笔记出自于 http://blog.csdn.net/zhouyunxuan
以上是大佬教程为你收集整理的golang学习笔记[2] 面向对象OOP全部内容,希望文章能够帮你解决golang学习笔记[2] 面向对象OOP所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。