美文网首页
12.Go语言·面向对象编程应用(一)

12.Go语言·面向对象编程应用(一)

作者: 一枼落知天下 | 来源:发表于2019-06-05 09:59 被阅读0次

    main.go

    // Go语言·面向对象编程应用
    package main
    
    //  包的本质是创建不同的文件夹
    //  go的每一个文件都是属于一个包的
    //  go以包的形式管理项目和文件目录。
    //  import "包的路径"
    import (
         utils "day21/model/utils" 
        _"fmt"
    )
    
    var content string = `
    ————————————————Go语言·面向对象编程应用————————————————————
    一、面向对象编程应用
    `
    
    
    func main() {
        utils.Entry()
    }
    

    utils.go

    // Go语言·面向对象编程应用
    package utils
    
    import (
        "fmt"
    )
    
    var layout string = "2006-01-02"
    
    // 全局变量
    var Author string = "Jhou Shuai"
    
    // 全局变量
    var Description string = "Go语言·面向对象编程应用"
    
    //全局变量:使用反引号来定义多行字符串
    var Content string = `
    ————————————————Go语言·面向对象编程应用————————————————————
    一、面向对象编程应用
    操作步骤:
        1.声明(定义)结构体,确定结构体名
        2.编写结构体的字段
        3.编写结构体的方法
    二、创建结构体变量时指定字段值。
        type Stu struct {
            Name string
            Age int
        }
        Golang在创建结构体实例时,可以直接指定字段的值
        方式一:
            1.在创建结构体变量的时候,就直接指定字段的值。但要依赖字段定义的顺序,
        一旦字段顺序发生改变,数据就会出错。
            var stu1 = Stu{"周帅",19} //stu1-->结构体数据空间
            stu2 := Stu{"Faker",18}
            2.在创建结构体变量的时候,把字段和字段值写在一起,成对出现,这种写法,
        就不依赖字段定义的顺序。
            var stu3 = Stu{
                Name :"Faker",
                Age : 20,
            }
            stu4 := Stu{
                Age : 19,
                Name : "Uzi",
            }
        方式二:返回一个指针类型
            var stu5 *Stu = &Stu{"Gogoing",19} //stu5--->地址--》结构体数据
            stu6 := &Stu{"Mata",19}
            var stu7 *Stu = &Stu{
                Name :"Cool",
                Age : 20,
            }
            stu8:= &Stu{
                Age : 19,
                Name : "Loving",
            }
    
    `
    
    type Student struct {
        id int
        Name string
        Gender string
        Age int
        Score float64
    }
    
    
    func (student *Student) say() string {
        info := fmt.Sprintf("%d %v %v %v %.2f ", 
            student.id,
            student.Name,
            student.Gender,
            student.Age,
            student.Score,
        )
        return  info
    }
    
    /*
        stu := Student{
            id : 2001,
            Name:"周帅",
            Gender:"男",
            Age:18,
            Score:97.5,
        }
        fmt.Println(stu.say())
     */
    
    type Box struct {
        len float64
        width float64
        height float64
    }
    
    
    func (box *Box) getVolumn() float64 {
        return box.len * box.width * box.height
    }
    
    
    /*
        var box Box
        box.height = 4
        box.width = 3.3
        box.len = 5
        volumn := box.getVolumn()
        fmt.Printf("%.2f \n", volumn)
     */
    
    type Visitor struct {
        Name string
        Age int
    }
    
    
    func (visitor *Visitor) showPrice() {
    
        if  visitor.Age >= 90 ||  visitor.Age <= 8{
            fmt.Println("该项目不适合,小朋友和老人游玩!")
            return
        }
    
        if visitor.Age>18 {
            fmt.Printf("游客[%v]你好!,收费20元! \n",visitor.Name)
        }else{
            fmt.Printf("游客[%v]你好!,你可以免费进去游玩! \n",visitor.Name)
        }
    }
    
    
    func PlayGame() {
        var flag = false
        var v Visitor
        for {
            fmt.Print("请输入您的姓名>>> ")
            fmt.Scanln(&v.Name)
            if v.Name == "n" {
                flag = true
                break;
            }
            fmt.Print("请输入您的年龄>>> ")
            fmt.Scanln(&v.Age)
            if v.Age <=0 {
                flag = true
                break;
            }
            v.showPrice()
        }
        if flag {
            fmt.Println("你退出游戏!欢迎您再次光临!")
        }
    }
    
    
    type Stu struct {
        Name string
        Age int
    }
    
    /**
     * [test 二、创建结构体变量时指定字段值。]
     * @author Jhou Shuai
     * @datetime 2019-06-05T09:49:33+080
     */
    func test() {
        // 方式一:
        var stu1 = Stu{"周帅",19} //stu1-->结构体数据空间
        stu2 := Stu{"Faker",18}
    
        var stu3 = Stu{
            Name :"Faker",
            Age : 20,
        }
    
        stu4 := Stu{
            Age : 19,
            Name : "Uzi",
        }
    
        fmt.Println(stu1,stu2,stu3,stu4) 
        // {周帅 19} {Faker 18} {Faker 20} {Uzi 19}
    
        // 方式二:返回一个指针类型
        var stu5 *Stu = &Stu{"Gogoing",19} //stu5--->地址--》结构体数据
        stu6 := &Stu{"Mata",19}
        var stu7 *Stu = &Stu{
            Name :"Cool",
            Age : 20,
        }
        stu8:= &Stu{
            Age : 19,
            Name : "Loving",
        }
    
        fmt.Println(stu5,stu6,stu7,stu8)
        // &{Gogoing 19} &{Mata 19} &{Cool 20} &{Loving 19}
    
    }
    
    /**
     * [Init 入口]
     * @author Jhou Shuai
     * @datetime 2019-05-18T11:58:33+0800
     */
    func Entry() {
        test()
    }
    

    相关文章

      网友评论

          本文标题:12.Go语言·面向对象编程应用(一)

          本文链接:https://www.haomeiwen.com/subject/lbkjxctx.html