, . , :
package user
import "encoding/json"
type User interface {
Name() string
}
type user struct {
Username string `json:"name"`
}
func (u *user) Name() string {
return "Mr. " + u.Username
}
func ParseUserData(data []byte) (User, error) {
user := &user{}
if err := json.Unmarshal(data, user); err != nil {
return nil, err
}
return user, nil
}
:
package user_test
import (
"testing"
"github.com/teris-io/user"
)
func TestParseUserData(t *testing.T) {
data := []byte("{\"name\": \"Uncle Sam\"}")
expected := "Mr. Uncle Sam"
if usr, err := user.ParseUserData(data); err != nil {
t.Fatal(err.Error())
} else if usr.Name() != expected {
t.Fatalf("expected %s, found %s", expected, usr.Name())
}
}
➜ git:( ) ✗ go test github.com/teris-io/user
ok github.com/teris-io/user 0.001s
- .
. , , - ( user.Name user.Name ) name. , : JSON, .