1. package main
  2. //Golang的方法定义
  3. //Golang中的方法是作用在特定类型的变量上,因此自定义类型,都可以有方法,不仅仅是struct
  4. //定义:func (recevier type) methodName(参数列表)(返回值列表){}
  5. import "fmt"
  6. type integer int
  7. func (p integer) print() {
  8. fmt.Println("p is:", p)
  9. }
  10. //这里传递的是副本,想改变p的值,需要传递指针
  11. func (p *integer) set(b integer) {
  12. *p = b
  13. }
  14. type Student struct {
  15. Name string
  16. Age int
  17. Score int
  18. sex int
  19. }
  20. //这里需要接受指针 *Student(接收者),否则修改不了值
  21. func (p *Student) init(name string, age int, score int) {
  22. p.Name = name
  23. p.Age = age
  24. p.Score = score
  25. fmt.Println(p)
  26. }
  27. func (p Student) getName() string {
  28. return p.Name
  29. }
  30. func (p *Student) setName(s string) {
  31. p.Name = s
  32. }
  33. func main() {
  34. var stu Student
  35. //修改地址的写法(&stu).init
  36. //但是go可以自动知道,接受者是指针,这里stu就传递地址
  37. stu.init("student", 18, 99)
  38. stu1 := stu.getName()
  39. fmt.Println(stu1)
  40. stu.setName("new-student")
  41. stu1 = stu.getName()
  42. fmt.Println(stu1)
  43. //type integer方法
  44. var a integer
  45. a = 100
  46. a.print()
  47. a.set(1000)
  48. a.print()
  49. }

分类: web

标签:   golang