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()
}
网友评论