我制作了一个包含 4 个房间的随机房间程序。我正在尝试获取每个房间的属性并将它们传递给其他功能。每个房间里都有一个人,有姓名和年龄属性。我正在尝试传递这些属性以针对 if 语句进行测试以发出额外的响应。我如何传递这些值?
//the random maze room game
package main
//All imports can be combined into ()
import ("fmt"
//Import needed for random operation
"math/rand"
//Import requied to call upon current time
"time"
)
type Person struct {
Name string
Age int
}
func main(){
// These two lines are designed to reset the random Seed every time the program is run
// Unless the randomizer is seeded, Golang 1.6 is pseudo-random,
// always defaulting to Seed(1)
s1 := rand.NewSource(time.Now().UnixNano())
r1 := rand.New(s1)
switch r1.Intn(4){
case 0:
westRoom()
case 1:
eastRoom()
case 2:
northRoom()
case 3:
southRoom()
default:
lostRoom()
}
p := Person{}
p.Name = Avatarname
p.Age = Avatarage
avatar(&p)
appearance(&p)
}
func westRoom(){
fmt.Println("You find yourself in a room with three walls, and a door behind you.")
fmt.Println("The opposite wall is a window, overlooking the sea")
Avatarname := "Bill"
Avatarage := 25
return
}
func eastRoom(){
fmt.Println("You find yourself in a room with a door on the walls to your left, right, and behind you")
fmt.Println("on the wall across from you is a painting of a mountain scene")
Avatarname := "Mary"
Avatarage := 33
return
}
func northRoom(){
fmt.Println("You find yourself in a room with a door on the wall behind you")
fmt.Println("You see several statues of people standing around the room")
Avatarname := "Joe"
Avatarage := 58
return
}
func southRoom(){
fmt.Println("You find yourself in a room with a door on the wall in front and behind you")
Avatarname := "Abagail"
Avatarage := 67
return
}
func lostRoom(){
fmt.Println("You are unable to find a room in a maze filled only with rooms")
fmt.Println("It's almost like the programmer didn't know what he was doing")
}
func avatar(p.Name, p.Age){
if p.Name == "Bill" || "Joe" {
fmt.Println("You see a man standing in the middle of the room")
} else {
fmt.Println("You see a woman standing in the middle of the room")
}
}
func appeareance(p.Name, p.Age) {
if p.Age > 50 {
fmt.Println("They look old")
} else {
fmt.Println("They look young")
}
}
最佳答案
一种方法是更改您的房间函数以返回 Person
结构或 Person
结构的属性。
在这里查看实时代码: The Go Playground
例如,
func northRoom() *Person{
fmt.Println("You find yourself in a room with a door on the wall behind you")
fmt.Println("You see several statues of people standing around the room")
return &Person{"Joe", 58}
}
现在 switch
语句中的函数调用可以预期返回一个 Person
结构。
var p *Person
switch r1.Intn(4){
case 0:
p = westRoom()
case 1:
p = eastRoom()
case 2:
p = northRoom()
case 3:
p = southRoom()
default:
p = lostRoom()
}
avatar(p)
appearance(p)
请注意,您需要更改 avatar()
和 appearance()
函数的签名以接受 *Person
参数。
关于function - 将值发送到另一个函数golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39154503/