Показать следующий день недели в Голанге - PullRequest
0 голосов
/ 12 сентября 2018

Я только начал изучать информационные технологии, и я подумал, что было бы интересно создать небольшую программу, которая показала бы вам, какой сегодня день. К сожалению, я застрял. В настоящее время это работает, когда вы пишете правильное число из массива, но я бы хотел, чтобы он работал со строкой. Поэтому, когда вы пишете «Maandag» (понедельник на голландском языке), программа ответит «Dinsdag» (вторник на голландском языке)

Это мой код:

package main

import (
    "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 ]

0 голосов
/ 12 сентября 2018

Вы можете перечислить массив и передать число и строку

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"
}
0 голосов
/ 12 сентября 2018

Что вы ищете, перечисления.В 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"
     //...
)
0 голосов
/ 12 сентября 2018

Диапазон в массиве дней, чтобы получить значение его индекса. Проверьте переданную строку и извлеките значение индекса совпадающей строки. Затем используйте этот индекс, чтобы получить значение следующего дня:

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])
    }
}

Пример игровой площадки

Или, как предположил Питер, вы можете использовать карты, которые более удобны и просты в этом случае:

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

...