我雖然是一項簡單的任務(wù),但遇到了一些麻煩。我有一個函數(shù),它格式化一個包含小時和分鐘值的結(jié)構(gòu)并將其格式化為字符串。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上面的行。知道這里發(fā)生了什么嗎?我想我會簡單地使用一個臨時變量來格式化 int 值
2 回答

aluckdog
TA貢獻(xiàn)1847條經(jīng)驗 獲得超7個贊
聲明String一次方法變量 ( var)。不要用短變量聲明 ( :=)重新聲明它們。例如,
package main
import "fmt"
type Clock struct {
h int
m int
}
func (c *Clock) String() string {
var (
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)
}
func main() {}
- 2 回答
- 0 關(guān)注
- 320 瀏覽
添加回答
舉報
0/150
提交
取消