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

我虽然是一项简单的任务,但遇到了一些麻烦。


我有一个函数,它格式化一个包含小时和分钟值的结构并将其格式化为字符串。


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)

}

我得到的错误是:


syntax error: unexpected name, expecting semicolon or newline or }对于h string上面的行。


知道这里发生了什么吗?我想我会简单地使用一个临时变量来格式化 int 值


手掌心
浏览 300回答 2
2回答

aluckdog

声明String一次方法变量 ( var)。不要用短变量声明 ( :=)重新声明它们。例如,package mainimport "fmt"type Clock struct {&nbsp; &nbsp; h int&nbsp; &nbsp; m int}func (c *Clock) String() string {&nbsp; &nbsp; var (&nbsp; &nbsp; &nbsp; &nbsp; h string&nbsp; &nbsp; &nbsp; &nbsp; m string&nbsp; &nbsp; )&nbsp; &nbsp; if c.m < 10 {&nbsp; &nbsp; &nbsp; &nbsp; m = fmt.Sprintf("0%d", c.m)&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; m = fmt.Sprintf("%d", c.m)&nbsp; &nbsp; }&nbsp; &nbsp; if c.h < 10 {&nbsp; &nbsp; &nbsp; &nbsp; h = fmt.Sprintf("0%d", c.h)&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; h = fmt.Sprintf("%d", c.h)&nbsp; &nbsp; }&nbsp; &nbsp; return fmt.Sprintf("%s:%s", h, m)}func main() {}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go