zoukankan      html  css  js  c++  java
  • go strcut 封装

     

     

    package model
    import "fmt"
    
    type person struct {
        Name string
        age int   //其它包不能直接访问..
        sal float64
    }
    
    //写一个工厂模式的函数,相当于构造函数
    func NewPerson(name string) *person {
        return &person{
            Name : name,
        }
    }
    
    //为了访问age 和 sal 我们编写一对SetXxx的方法和GetXxx的方法
    func (p *person) SetAge(age int) {
        if age >0 && age <150 {
            p.age = age
        } else {
            fmt.Println("年龄范围不正确..")
            //给程序员给一个默认值
        }
    }
    
    func (p *person) GetAge() int {
        return p.age
    }
    
    
    func (p *person) SetSal(sal float64) {
        if sal >= 3000 && sal <= 30000 {
            p.sal = sal
        } else {
            fmt.Println("薪水范围不正确..")
            
        }
    }
    
    func (p *person) GetSal() float64 {
        return p.sal
    }
    model/person.go
    package main
    import (
        "fmt"
        "go_code/chapter11/encapsulate/model"
    )
    
    func main() {
    
        p := model.NewPerson("smith")
        p.SetAge(18)
        p.SetSal(5000)
        fmt.Println(p)
        fmt.Println(p.Name, " age =", p.GetAge(), " sal = ", p.GetSal())
        
    }
    main.go
  • 相关阅读:
    第三章,DNA序列的进化演变
    哈迪-温伯格定律和近亲杂交
    mysql
    Dajngo admin使用
    Django之Form组件
    python三大器
    python函数
    python文件操作
    python字典和集合
    算法基础
  • 原文地址:https://www.cnblogs.com/sunlong88/p/11180493.html
Copyright © 2011-2022 走看看