为了账号安全,请及时绑定邮箱和手机立即绑定

在 golang 中显示一周的第二天

在 golang 中显示一周的第二天

Go
慕森卡 2023-04-04 14:20:06
我刚开始学习 IT,我认为制作一个小程序来告诉你明天是什么日子会很有趣。可悲的是我被困住了。目前,当您从数组中写入正确的数字时它可以工作,但我希望它可以使用字符串。因此,当您输入“Maandag”(荷兰语为星期一)时,程序将回答 Dinsdag(荷兰语为星期二)到目前为止,这是我的代码:package mainimport (    "fmt")func main() {    var counter int    var dag [7]string    dag[0] = "Zondag"    dag[1] = "Maandag"    dag[2] = "Dinsdag"    dag[3] = "Woensdag"    dag[4] = "Donderdag"    dag[5] = "Vrijdag"    dag[6] = "Zaterdag"    fmt.Println("Welke dag is het?")    fmt.Scan(&counter)    if counter == 6 {        counter = 0        fmt.Println(dag[counter])    }    if counter != 6 {        counter++        fmt.Println(dag[counter])    }}
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

遍历天数数组以获取其索引值。检查传递的字符串并获取匹配字符串索引的值。然后使用该索引获取第二天的值:


package main


import (

    "fmt"

)


var (

    counter int

    day     string

)


func main() {


    var dag [7]string

    dag[0] = "Zondag"

    dag[1] = "Maandag"

    dag[2] = "Dinsdag"

    dag[3] = "Woensdag"

    dag[4] = "Donderdag"

    dag[5] = "Vrijdag"

    dag[6] = "Zaterdag"


    fmt.Println("Welke dag is het?")

    fmt.Scan(&day)

    for key, value := range dag {

        if day == value {

            counter = key

        }

    }

    fmt.Println(counter)

    if counter == 6 {

        counter = 0

        fmt.Println(dag[counter])

    }


    if counter != 6 {

        counter = counter + 1

        fmt.Println(dag[counter])

    }

}


游乐场示例

或者正如 Peter 所建议的那样,您也可以使用地图,在这种情况下更方便和易于使用:


package main


import (

    "fmt"

)


func main() {


    var value string

    dag := make(map[string]string)

    dag["Zondag"] = "Maandag"

    dag["Maandag"] = "Dinsdag"

    dag["Dinsdag"] = "Woensdag"

    dag["Woensdag"] = "Donderdag"

    dag["Donderdag"] = "Vrijdag"

    dag["Vrijdag"] = "Zaterdag"


    fmt.Println("Welke dag is het?")

    fmt.Scan(&value)

    fmt.Println(dag[value])

}

Go Playground上的工作代码



查看完整回答
反对 回复 2023-04-04
?
心有法竹

TA贡献1866条经验 获得超5个赞

你在找什么是枚举。在 Go 中,它们可以这样实现:


type Weekday int 


const (

   Sunday    Weekday = iota

   Monday    

   Tuesday   

   Wednesday 

   Thursday  

   Friday    

   Saturday   

)


func (day Weekday) String() string {

    // declare an array of strings

    // ... operator counts how many

    // items in the array (7)

    names := [...]string{

        "Sunday", 

        "Monday", 

        "Tuesday", 

        "Wednesday",

        "Thursday", 

        "Friday", 

        "Saturday"}

    // → `day`: It's one of the

    // values of Weekday constants.    

    // If the constant is Sunday,

    // then day is 0.

    // prevent panicking in case of

    // `day` is out of range of Weekday

    if day < Sunday || day > Saturday {

      return "Unknown"

    }

    // return the name of a Weekday

    // constant from the names array 

    // above.

    return names[day]

}


// will display "Sunday"

fmt.Println(Sunday)


// will display "Monday"

fmt.Println(Sunday + 1)

如果你不需要 int 底层类型,你可以这样创建它:


const (

    Sunday = "Sunday"

     //...

)


查看完整回答
反对 回复 2023-04-04
?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

您可以枚举数组并传输数字和字符串


func GetNextDay(someday string){

    for i, v := range dag{

      if v == someday {

          if i==6 {

              i = 0

          }else {

             i = i + 1

          }

          return dag[i]

      }

    }

    return "no such day in a week"

}


查看完整回答
反对 回复 2023-04-04
  • 3 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信