package main
import(
"fmt"
)
/**
* 方法能给用户定义类型添加新的行为。方法实际上也是函数,只是在声明时,
* 在关键字func和方法之间增加一个参数
* 首字母大写权限为public,所有引入者都可访问
* 首字母小写权限为private,只限本包内访问
*/
type User struct{
Name string
Passwd string
Email string
}
/**
* notify()方法声明为user值类型。如果声明用值接收声明方法,
* 调用时会使用这个值的一个副本来执行。
*
* 如果user是指针类型值,这个方法是使用指针接收者声明。
* 当调用者使用指针接收者声明的方法时,这个方法会共享调用方法时接收者所指向的值
*
*/
func (u User) notify(){
fmt.Printf("Send User Email To %s<%s>\n",u.Name,u.Email)
}
func (u *User) setName(name string){
u.Name = name
}
func (u *User) getName() string{
return u.Name
}
func (u *User) setPasswd(passwd string){
u.Passwd = passwd
}
func (u *User) getPasswd() string{
return u.Passwd
}
func (u *User) setEmail(email string){
u.Email = email
}
func (u *User) getEmail() string {
return u.Email
}
func main(){
//user类型的值可以用来调用
user := User{"Tom","abc-123","18682093512@163.com"}
fmt.Printf("user:%+v\n",user)
user.setName("Lucy")
fmt.Printf("user:%+v\n",user)
user.notify()
//指向user类型值的指针来调用
lisa := &User{"Lisa","abc-123","lisa@163.com"}
lisa.notify()
}
golang中的方法
最新推荐文章于 2022-02-18 16:19:10 发布