function - 将值发送到另一个函数golang

标签 function go struct

我制作了一个包含 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/

相关文章:

c++ - Arduino C++ : Does the F() macro make any sense inside a function?

PHP include/require 内部函数

go - 在 beego orm 中插入带有 m2m 的模型

C 结构和 printf

ios - Swift 结构改变一个变量不起作用?

python - 函数参数默认值等于另一个参数

python - 'print'在Python中的实现

json - XML 到 json 转换

go - 如何通过读取设置文件在 Golang 中动态创建结构?

c - C中指向另一个结构的结构指针