如何在golang中传递变量

时间:2015-12-02 13:53:43

标签: go

package main

import (
    "fmt"
    "bufio"
    "os"
    "strconv"
    "math"
)

func main() {
    var inpA = bufio.NewScanner(os.Stdin)
    var inpB = bufio.NewScanner(os.Stdin)
    var inpC = bufio.NewScanner(os.Stdin)
    fmt.Print("input A value: ")
    inpA.Scan()
    fmt.Print("input B value: ")
    inpB.Scan()
    fmt.Print("input C value: ")
    inpC.Scan()
    cal(inpA.Text(),inpB.Text(),inpC.Text())
}

func cal(INP1, INP2, INP3) string{
    b := INP2
    a := INP1
    c := INP3
    e := 4
    la := 2
    a2 := float64(e)*float64(a)
    b2 := float64(b*b)
    ac := float64(e)*float64(a)*float64(c)
    q := math.Sqrt(math.Abs(b2-ac))
    x := q/a2
    Rx := x
    fmt.Print("x = " + strconv.Itoa(Rx))
}

我做错了什么?我想要做的就是将输入传递给func cal。我也遇到打印Rx的问题。因为它是浮子。那么如何将x / RX更改为非浮动?

1 个答案:

答案 0 :(得分:0)

@JimB已经指出func cal没有参数类型。此外,还有其他问题需要:

  1. 将func cal的参数类型设置为字符串
  2. 为了使用a,b和c,将那里的值转换为float64
  3. la未使用
  4. 需要将Rx转换为字符串
  5. func没有返回任何内容。
  6. 看看这个更新的功能:

    func cal(INP1, INP2, INP3 string) string{
        b,_ := strconv.ParseFloat(INP2, 64)
        a,_ := strconv.ParseFloat(INP1, 64)
        c,_ := strconv.ParseFloat(INP3, 64)
        e := 4
        la := 2
        a2 := float64(e)*float64(a)
        b2 := float64(b*b)
        ac := float64(e)*float64(a)*float64(c)
        q := math.Sqrt(math.Abs(b2-ac))
        x := q/a2
        Rx := x
        fmt.Print("x = " + strconv.FormatFloat(Rx, 'f', 6, 64))
        fmt.Print(la)
        return "return value"
    }
    

    现在我用la打印了它。