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

如何在 Go 中使用字符串文字

如何在 Go 中使用字符串文字

Go
繁花不似锦 2023-07-10 14:21:36
在 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"}
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

在 Go 中,不存在像 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?


编辑1

我不能只输入输入,因为 go 给出错误无法使用输入(类型 []byte)作为字段值中的类型字符串


[]byte可转换为字符串。如果您的input类型是[]byte,只需将其写为string(input).


bot := DigitalAssistant{

    string(input),

    "teamAwesome",

    "awesomebotimagename",

    "0.1.0",

    1,

    8000,

    "health",

    "fakeperson@gmail.com",

}

编辑2

如果值是 int,为什么我不能做同样的事情?因此,对于括号 1 和 8000 中的值,我不能只执行int(numberinput)or int(portinput),否则我会收到错误cannot use numberinput (type []byte) as the type int in field value


可以通过使用显式转换来实现从string到或从 到 的转换。然而,这种方法并不适用于所有类型。[]byteT(v)


例如,要转化[]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)


查看完整回答
反对 回复 2023-07-10
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

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