在go模板中,我想用变量替换下面的字符串:
bot := DigitalAssistant{"bobisyouruncle", "teamAwesome", "awesomebotimagename", "0.1.0", 1, 8000, "health", "fakeperson@gmail.com"}
说我想用变量bobisyouruncle
替换input
在js中,这很简单:
bot := DigitalAssistant{`${input}`, "teamAwesome", "awesomebotimagename", "0.1.0", 1, 8000, "health", "fakeperson@gmail.com"}
答案 0 :(得分:4)
在运行中,没有像es6那样的字符串模板文字。但是您绝对可以使用fmt.Sprintf做类似的事情。
fmt.Sprintf("hello %s! happy coding.", input)
在您的情况下,将是这样的:
bot := DigitalAssistant{fmt.Sprintf("%s", input), "teamAwesome", "awesomebotimagename", "0.1.0", 1, 8000, "health", "fakeperson@gmail.com"}
一个有趣的问题。为什么您需要在非常简单的字符串(如${input}
)上使用字符串模板文字?为什么不只是input
?
我不能只输入内容,因为go给出错误,不能在字段值中使用输入(类型[] byte)作为类型字符串
[]byte
可转换为字符串。如果您的input
类型为[]byte
,只需将其写为string(input)
。
bot := DigitalAssistant{string(input), "teamAwesome", "awesomebotimagename", "0.1.0", 1, 8000, "health", "fakeperson@gmail.com"}
如果值是int,为什么不能做同样的事情?因此,对于方括号1和8000中的值,我不能只做
int(numberinput)
或int(portinput)
,否则我会得到错误cannot use numberinput (type []byte) as the type int in field value
使用explicit conversion T(v)
可以实现从string
到[]byte
的转换,反之亦然。但是,此方法不适用于所有类型。
例如,要将[]byte
转换为int
,则需要多个步骤。
// convert `[]byte` into `string` using explicit conversion
valueInString := string(bytesData)
// then use `strconv.Atoi()` to convert `string` into `int`
valueInInteger, _ := strconv.Atoi(valueInString)
fmt.Println(valueInInteger)
我建议看看go spec: conversion。