无法在函数-Go中定义变量
我觉得这是一项简单的任务,但我有点麻烦 我有一个函数,它可以格式化一个包含一小时和一分钟值的结构,并将其格式化为字符串无法在函数-Go中定义变量,go,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
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)
}
类型时钟结构{
h int
密特
}
func(c*时钟)字符串()字符串{
h字符串
m字符串
如果c.m<10{
m:=fmt.Sprintf(“0%d”,c.m)
}否则{
m:=fmt.Sprintf(“%d”,c.m)
}
如果c.h<10{
h:=fmt.Sprintf(“0%d”,c.h)
}否则{
h:=fmt.Sprintf(“%d”,c.h)
}
返回fmt.Sprintf(“%s:%s”,h,m)
}
我得到的错误是:
语法错误:名称意外,上面的h字符串应为分号或换行符或}
知道这是怎么回事吗?我想我可以简单地使用一个临时变量来格式化需要声明的int值:
var h string
var m string
当影响h
和m
的值时,不要使用:=
,而是使用=
(或者您只在它们的内部范围内定义它们,而不是重用以前定义的变量)
如果c.m<10{
m=fmt.Sprintf(“0%d”,c.m)
}否则{
m=fmt.Sprintf(“%d”,c.m)
}
如果c.h<10{
h=fmt.Sprintf(“0%d”,c.h)
}否则{
h=fmt.Sprintf(“%d”,c.h)
}
完整示例:
输出:您好,操场02:08
您需要声明:
var h string
var m string
当影响h
和m
的值时,不要使用:=
,而是使用=
(或者您只在它们的内部范围内定义它们,而不是重用以前定义的变量)
如果c.m<10{
m=fmt.Sprintf(“0%d”,c.m)
}否则{
m=fmt.Sprintf(“%d”,c.m)
}
如果c.h<10{
h=fmt.Sprintf(“0%d”,c.h)
}否则{
h=fmt.Sprintf(“%d”,c.h)
}
完整示例:
输出:Hello,操场02:08
声明字符串方法变量一次(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() {}
主程序包
输入“fmt”
类型时钟结构{
h int
密特
}
func(c*时钟)字符串()字符串{
变量(
h字符串
m字符串
)
如果c.m<10{
m=fmt.Sprintf(“0%d”,c.m)
}否则{
m=fmt.Sprintf(“%d”,c.m)
}
如果c.h<10{
h=fmt.Sprintf(“0%d”,c.h)
}否则{
h=fmt.Sprintf(“%d”,c.h)
}
返回fmt.Sprintf(“%s:%s”,h,m)
}
func main(){}
参考资料:
声明字符串方法变量一次(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() {}
主程序包
输入“fmt”
类型时钟结构{
h int
密特
}
func(c*时钟)字符串()字符串{
变量(
h字符串
m字符串
)
如果c.m<10{
m=fmt.Sprintf(“0%d”,c.m)
}否则{
m=fmt.Sprintf(“%d”,c.m)
}
如果c.h<10{
h=fmt.Sprintf(“0%d”,c.h)
}否则{
h=fmt.Sprintf(“%d”,c.h)
}
返回fmt.Sprintf(“%s:%s”,h,m)
}
func main(){}
参考资料:
太棒了。这成功了,谢谢!当它允许我的时候,我会把它标记正确。太棒了。这成功了,谢谢!我会在它允许的时候把它标记正确。当然,除了学习一点之外,你应该使用这个软件包。是的。我让人告诉我如何将其简化为fmt.Sprintf(“%02d:%02d,c.m/60,c.m%60),我只需在几分钟内保存所有内容。当然,除了学习一点,你还应该使用这个软件包。是的。我让人告诉我如何将其简化为fmt.Sprintf(“%02d:%02d,c.m/60,c.m%60),我只需在几分钟内保存所有内容。