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

如果我将一个类型定义为字符串常量,为什么我不能将该类型作为实际字符串传递给函数?

如果我将一个类型定义为字符串常量,为什么我不能将该类型作为实际字符串传递给函数?

Go
至尊宝的传说 2021-06-24 10:06:37
“StringType”类型是一个字符串,仅此而已。编译器抱怨第 21 行,但由于某种原因,第 16 行没有问题(如果您注释 21 并取消注释 22)。这两行之间有什么区别(都将 StringType 传递给同一个函数),为什么其中一行有效而另一行无效?这是代码,内嵌:package mainimport (    "fmt"    "strings")type StringType stringconst (    FirstString  = "first"    SecondString = "second")func main() {    fmt.Println(strings.Contains(FirstString, SecondString))    // line 16}func myFunc(a StringType, b StringType) bool {    return strings.Contains(a, b)                               // line 21    //return false}
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

在第一种情况下,您正在传递字符串,没问题。

在第二个中,您传递StringType值而不是字符串。您需要通过转换它们来告诉编译器它们是字符串:

代替

return strings.Contains(a, b)

return strings.Contains(string(a), string(b))


查看完整回答
反对 回复 2021-06-28
  • 3 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

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