dsxpt62448 2014-09-24 20:22
浏览 75
已采纳

无法在函数中定义变量-Go

I am having a little trouble with what I though was a simple task.

I have a function that formats a struct that holds an hour and a minute value and formats it into a string.

type Clock struct {
    h int
    m int
}

func (c *Clock) String() string {
    h string
    m string
    if c.m < 10 {
        m := fmt.Sprintf("0%d", c.m)
    } else {
        m := fmt.Sprintf("%d", c.m)
    }
    if c.h < 10 {
        h := fmt.Sprintf("0%d", c.h)
    } else {
        h := fmt.Sprintf("%d", c.h)
    }
    return fmt.Sprintf("%s:%s", h, m)
}

The error I am getting is:

syntax error: unexpected name, expecting semicolon or newline or } for the line h string above.

Any idea what is going on here? I figured I would simple use a temporary variable to format the int values

  • 写回答

2条回答 默认 最新

  • donglin7979 2014-09-24 20:23
    关注

    You need to declare:

    var h string
    var m string
    

    And do not use := but = when affecting values to h and m (or you would define those only in their inner scope, instead of reusing the variables defined before)

    if c.m < 10 {
        m = fmt.Sprintf("0%d", c.m)
    } else {
        m = fmt.Sprintf("%d", c.m)
    }
    if c.h < 10 {
        h = fmt.Sprintf("0%d", c.h)
    } else {
        h = fmt.Sprintf("%d", c.h)
    }
    

    Full example: play.golang.org

    Output: Hello, playground 02:08

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?