应用一
package main
import "fmt"
/*
1.声明(定义)结构体,确定结构体名
2.编写结构体的字段
3.编写结构体的方法
案例
1.编写一个Student结构体,包含name、gender、age、id、score字段,分别为string、string、int、int、float64类型
2.结构体中声明一个say方法,返回string类型,方法返回信息中包含所有字段值。
3.在main方法中创建Student结构体实例(变量),并访问say方法,调用结果打印输出
*/
type Student struct {
name string
gender string
age int
id int
score float64
}
func (student *Student) say() string {
infoStr := fmt.Sprintf("student的信息 name=[%v] gender=[%v] age=[%v] id=[%v] score=[%v]",
student.name, student.gender, student.age, student.id, student.score)
return infoStr
}
func main() {
var stu = Student{
name: "star",
gender: "boy",
age: 15,
id: 1008611,
score: 100,
}
infoStr := stu.say()
fmt.Println(infoStr)
}
应用二
package main
import "fmt"
//创建一个Box结构体,在其中声明三个字段表示一个立方体的长宽高,长宽高要从终端获取
//声明一个方法获取立方体的体积
//创建一个Box结构体变量,打印给定尺寸的立方体体积
type Box struct {
length float64
width float64
hight float64
}
func (box *Box) getVolumn() float64 {
return box.length * box.hight * box.width
}
func main() {
var box Box
box.length = 1.1
box.width = 2.2
box.hight = 3.3
sum := box.getVolumn()
fmt.Println("体积为 ", sum)
}
应用三
package main
import "fmt"
//一个景区根据游人的年龄收取不同价格的门票,比如年龄大于18,收费20元,其他情况门票免费
//编写一个Visitor结构体,根据年龄段决定能够购买的门票价格并输出
type Visitor struct {
Age int
Name string
}
func (visitor *Visitor) buy() {
if visitor.Age >= 90 || visitor.Age <= 8 {
fmt.Printf("游客名字为 %v 年龄为 %v 年龄不符合,谢绝游玩\n", visitor.Name, visitor.Age)
} else if visitor.Age > 18 {
fmt.Printf("游客名字为 %v 年龄为 %v 收门票20元\n", visitor.Name, visitor.Age)
} else {
fmt.Printf("游客名字为 %v 年龄为 %v 免费游玩\n", visitor.Name, visitor.Age)
}
}
func main() {
var visitor Visitor
for {
fmt.Println("请输入姓名:")
fmt.Scanln(&visitor.Name)
if visitor.Name == "n" {
fmt.Println("退出程序")
break
}
fmt.Println("请输入年龄:")
fmt.Scanln(&visitor.Age)
visitor.buy()
}
}