golang中,如何写一个类?如下:
package mainimport ("fmt""github.com/bitly/go-simplejson")import ("encoding/json")//在go中,用 struct 就可以定义一个类了type student struct {name string //这相name是小字开头的,因为在同一个包里面不用大写,在不同的包,只有大写才能导出,哈.这个要注意的}//然后能过在student上实现sum函数,这样 student 类就可以有一个函数了//这里返回一个bool值,也可以不返回func (s student) sum(numbers ...int) bool {fmt.Println(s.name)for _, v := range (numbers) {fmt.Println(v)}fmt.Println(numbers)return true}//同样的,也可以实现其他的func (s student) getName() string {return s.name}//设置名字,是不是和java很像?哈哈//当然,最最重要的是,这个要你传一个指针哦,不然,student只是一份拷贝,不能设置名字的.//可以把*号去掉试下,是不是打印两个 kris.func (s *student) setName(name string) {s.name = name}//随便来一个json吧,web和json现在是很难分开了type MyData struct {Name string `json:"item"` //这个单引号里,就算是别名了Other float32 //没有单引号的效果,可以看下}func main() {numbers := []int{1, 2, 3, 4}s := student{"kris"}data := s.sum(numbers...)fmt.Println(data)fmt.Println(s.getName())s.setName("jack")fmt.Println(s.getName())//json的处理var detail MyDatadetail.Name = "1"detail.Other = 2body, err := json.Marshal(detail)if err != nil {panic(err.Error())}fmt.Println(body) //这样子打印出来,是看不懂的,因为是一个byte数组str := string(body) //试下这样子?fmt.Println(str) //一下就清晰明了了js, err := simplejson.NewJson(body)if err != nil {panic(err.Error())}fmt.Println(js) //这样子如何?看得清楚了吧?}