Как создать динамическое имя переменной путем объединения двух строк - PullRequest
0 голосов
/ 20 января 2019

Я хочу создать имя переменной путем объединения с текущей датой и предоставления значения для имени созданной переменной. Имя моей переменной должно выглядеть примерно так "Key-2019-01" , чтобы я мог сохранить значение как var Key-2019-01 = "yes"

Я пробовал как ниже.

     package main

     import (
         "fmt"
         "time"
         "strconv"
          "strings" 
     )

    func main() {
        currentMonth := time.Now().Month()
        currentYear := time.Now().Year()
        var month = int(currentMonth)
        var currentDate = strings.Join([]string{strconv.Itoa(currentYear), "-", strconv.Itoa(month)}, "")

        var "Key",currentDate string

        value, err := json.Marshal("yes")
        stub.PutState(("Key", currentDate), value)
    }      

Может быть полезно, если я получу рабочий код этого.

1 Ответ

0 голосов
/ 20 января 2019

Это невозможно в Go, так как это скомпилированный и статически типизированный язык. Компилятор должен знать во время компиляции имена и типы переменных (*). То, что вы спрашиваете, это именование переменных во время выполнения, которое не может работать. Тем не менее, крайне маловероятно, что вам это действительно нужно на практике. Карты могут предоставлять аналогичные возможности:

m := make(map[string]string)
m["key"] = "value"

И вы можете создать любой из них во время выполнения. Немного адаптируя ваш пример:

package main

import (
    "fmt"
    "strconv"
    "strings"
    "time"
)

func main() {
    m := make(map[string]string)
    currentMonth := time.Now().Month()
    currentYear := time.Now().Year()
    var month = int(currentMonth)
    var currentDate = strings.Join([]string{strconv.Itoa(currentYear), "-", strconv.Itoa(month)}, "")

    m["key"+currentDate] = "value"
    fmt.Println(m)
}

Распечатывается:

map[key2019-1:value]

(*) За некоторыми исключениями, которые не относятся к данному конкретному обсуждению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...