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条)

报告相同问题?

悬赏问题

  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答