goオブジェクト向けプログラミング——パッケージ
11181 ワード
パッケージのメリット実装詳細を隠す データを検証し、安全で合理的であることを保証する パッケージの実装方法構造体の属性をカプセル化 方法、パッケージによるパッケージ化 パッケージの実装手順構造体・属性のフィールドを小文字にする 構造体が存在するパッケージにファクトリモードを提供し、頭文字は大文字で、構造関数 に似ている.属性の判断と付与 属性値 を取得するための頭文字大文字Getメソッドを提供する
example main.go account.go
func (c *student)SetScore(score float64){
c.score = score
}
func (c *student)PutScore()float64{
return c.score
}
example
package main
import (
"fmt"
"newStudy/fengzhuang/account"
)
func main(){
var account = account.NewAccount()
var err error
err = account.SetUser("ganganlee")
if err != nil {
fmt.Println(err)
return
}
err = account.SetPassword("123456")
if err != nil {
fmt.Println(err)
return
}
err = account.SetScore(21)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(account)
}
package account
import "github.com/pkg/errors"
//
type Account struct {
user string
score float64
passWord string
}
//
func NewAccount() *Account {
return &Account{}
}
//
func (c *Account)SetUser(user string) error {
if len(user)<6 || len(user)>10 {
return errors.New(" ")
}
c.user = user
return nil
}
//
func (c *Account)GetUser()string{
return c.user
}
//
func (c *Account)SetScore(score float64) error {
if score < 20 {
return errors.New(" 20")
}
c.score = score
return nil
}
//
func (c *Account)GetScore()float64{
return c.score
}
//
func (c *Account)SetPassword(password string) error {
if len(password) != 6 {
return errors.New(" 6 ")
}
c.passWord = password
return nil
}
//
func (c *Account)GetPassword()string{
return c.passWord
}