golang中,如何写一个类?如下:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/bitly/go-simplejson"
  5. )
  6. import (
  7. "encoding/json"
  8. )
  9. //在go中,用 struct 就可以定义一个类了
  10. type student struct {
  11. name string //这相name是小字开头的,因为在同一个包里面不用大写,在不同的包,只有大写才能导出,哈.这个要注意的
  12. }
  13. //然后能过在student上实现sum函数,这样 student 类就可以有一个函数了
  14. //这里返回一个bool值,也可以不返回
  15. func (s student) sum(numbers ...int) bool {
  16. fmt.Println(s.name)
  17. for _, v := range (numbers) {
  18. fmt.Println(v)
  19. }
  20. fmt.Println(numbers)
  21. return true
  22. }
  23. //同样的,也可以实现其他的
  24. func (s student) getName() string {
  25. return s.name
  26. }
  27. //设置名字,是不是和java很像?哈哈
  28. //当然,最最重要的是,这个要你传一个指针哦,不然,student只是一份拷贝,不能设置名字的.
  29. //可以把*号去掉试下,是不是打印两个 kris.
  30. func (s *student) setName(name string) {
  31. s.name = name
  32. }
  33. //随便来一个json吧,web和json现在是很难分开了
  34. type MyData struct {
  35. Name string `json:"item"` //这个单引号里,就算是别名了
  36. Other float32 //没有单引号的效果,可以看下
  37. }
  38. func main() {
  39. numbers := []int{1, 2, 3, 4}
  40. s := student{"kris"}
  41. data := s.sum(numbers...)
  42. fmt.Println(data)
  43. fmt.Println(s.getName())
  44. s.setName("jack")
  45. fmt.Println(s.getName())
  46. //json的处理
  47. var detail MyData
  48. detail.Name = "1"
  49. detail.Other = 2
  50. body, err := json.Marshal(detail)
  51. if err != nil {
  52. panic(err.Error())
  53. }
  54. fmt.Println(body) //这样子打印出来,是看不懂的,因为是一个byte数组
  55. str := string(body) //试下这样子?
  56. fmt.Println(str) //一下就清晰明了了
  57. js, err := simplejson.NewJson(body)
  58. if err != nil {
  59. panic(err.Error())
  60. }
  61. fmt.Println(js) //这样子如何?看得清楚了吧?
  62. }

分类: web

标签:   golang