golang中可以像java一样,用seter和geter方法的。

  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) *Student {
  31. p.Name = s
  32. return p
  33. }
  34. func main() {
  35. var stu Student
  36. //修改地址的写法(&stu).init
  37. //但是go可以自动知道,接受者是指针,这里stu就传递地址
  38. stu.init("student", 18, 99)
  39. stu1 := stu.getName()
  40. fmt.Println(stu1)
  41. stu2 := stu.setName("new-student")
  42. fmt.Println(stu2)
  43. //type integer方法
  44. var a integer
  45. a = 100
  46. a.print()
  47. a.set(1000)
  48. a.print()
  49. }

分类: web

标签:   golang