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

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语言·面向对象编程应用(一))