在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Golang中的方法是作用在特定类型的变量上,因此自定义类型,都可以有方法,而不仅仅是struct。 定义格式func (var *Struct_Name) FuncName( var0, var1... ) return type {}
package main import ( "fmt" ) type test struct { name string age int } func (v *test) getList() { fmt.Println("getList") } func main() { var s = new(test) s.getList() } golang中结构体方法没有构造函数,可以自己定义并执行构造函数package main import ( "fmt" ) type test struct { name string age int } func (this *test) init(name string, age int) { this.name = name this.age = age } func (this *test) getName() string { return this.name } func (this *test) getAge() int { return this.age } func main() { var s = new(test) s.init("zhangsan", 20) fmt.Println(s.getName()) fmt.Println(s.getAge()) } 自行调用初始化方法来实现构造函数的作用 给一个类型取别名package main import "fmt" type integer int func (this integer) test() { fmt.Println("print integer") } type test struct { name string age int } func main() { var i = new(integer) i.test() } 结构体是用户单独定义的类型,不能和其他类型进行强制转换package main type integer int func main() { var i integer i = 100 var n = 10 n = i } 结构体是值类型的,改变的是内部的副本。
package main import ( "fmt" ) type integer int func (this integer) get() { fmt.Println(this) } func (this integer) set(num integer) { this = num } func main() { var i integer i = 100 i.set(1999) fmt.Print(i) } package main import ( "fmt" ) type integer int func (this integer) get() { fmt.Println(this) } func (this *integer) set(num integer) { *this = num } func main() { var i integer i = 100 (&i).set(1999) //= i.set(1999) fmt.Print(i) } 方法的访问控制也是通过控制的
结构体继承如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问 匿名结构体的方法,从而实现了继承。 结构体方法的继承 package main import ( "fmt" ) type test struct { Name int Age int } func (this test) getName() int { return this.Name } type test1 struct { test } func main() { var t test1 t.Name = 123 var name = t.getName() fmt.Println(name) } 如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问 匿名结构体的方法,从而实现了继承。 如果一个struct嵌套了另一个有名结构体,那么这个模式就叫组合。 package main import ( "fmt" ) type test struct { Name int Age int } func (this test) getName() int { return this.Name } type test1 struct { t test } func main() { var t test1 t.t.Name = 123 var name = t.t.getName() fmt.Println(name) }
|
请发表评论