猿问

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


“StringType”类型是一个字符串,仅此而已。编译器抱怨第 21 行,但由于某种原因,第 16 行没有问题(如果您注释 21 并取消注释 22)。


这两行之间有什么区别(都将 StringType 传递给同一个函数),为什么其中一行有效而另一行无效?


这是代码,内嵌:


package main


import (

    "fmt"

    "strings"

)


type StringType string


const (

    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

}


至尊宝的传说
浏览 212回答 3
3回答

三国纷争

在第一种情况下,您正在传递字符串,没问题。在第二个中,您传递StringType值而不是字符串。您需要通过转换它们来告诉编译器它们是字符串:代替return strings.Contains(a, b)和return strings.Contains(string(a), string(b))
随时随地看视频慕课网APP

相关分类

Go
我要回答