温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go中的struct之方法method初体验

发布时间:2020-09-27 07:12:04 来源:网络 阅读:578 作者:ck_god 栏目:编程语言
// code_017_struct_method_usage project main.go package main import ( "fmt" ) type MyInt int func (a MyInt) Add(b MyInt) MyInt { return a + b } func Add(a, b MyInt) MyInt { return a + b } type Person struct { name string sex byte age int } func (p Person) PrintInfo() { fmt.Println(p.name, p.age) } func (p *Person) SetInfoPointer() { (*p).name = "god_girl" p.sex = 1 p.age = 22 } func (p Person) SetInfoValue() { p.name = "god_like" p.sex = 1 p.age = 23 } func main() { /* 带有接收者的函数,我们称之为方法(method).本质上,一个方法则是一个和特殊类型关联的函数。 func (receiver ReceiverType) funcName(parameters){results} 1)参数 receiver 可任意命名。如方法中未曾使用,可省略参数名。 参数 receiver 类型可以是 T 或 *T。基类型 T 不能是接口或指针。 不支持重载方法,也就是说,不能定义名字相同但是不同参数的方法。 2)在Go语言中,可以给任意自定义类型(包括内置类型,但不包括指针类型)添加相应的方法。 */ //1) 基本使用 var a MyInt = 1 var b MyInt = 1 fmt.Println("a.Add(b)=", a.Add(b)) fmt.Println("Add(a,b)=", Add(a, b)) //2)结构体作为接收者 p := Person{"ck_god", 0, 18} p.PrintInfo() //3)结构体的值语义和引用语义 p1 := Person{"wanglaoji", 0, 27} fmt.Println("函数调用前= ", p1) (&p1).SetInfoPointer() fmt.Println("函数调用后=", p1) fmt.Println("==========================") p2 := Person{"ck_god", 0, 18} fmt.Println("函数调用前 = ", p2) p2.SetInfoValue() fmt.Println("函数调用后 = ", p2) //函数调用后 = {mike 109 18} } 
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI