golang中,如何写一个类?如下:
package main
import (
"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 MyData
detail.Name = "1"
detail.Other = 2
body, 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) //这样子如何?看得清楚了吧?
}