不能在字符串映射中使用字符串的基础类型:“不能在映射索引中使用<xxx>(类型<yyy>)作为类型字符串”

时间:2019-09-16 14:03:37

标签: string go

我具有字符串的基础类型:type Capability string

我想将其用作字符串映射中的一个字符串,但出现错误:

  

不能将cap(类型Capability)用作地图索引中的类型字符串

这是我的代码:

package main

import (
    "fmt"
)


type Capability string
var caps_list = map[string]int {
    "HOME" : 1,
}

func main() {

    var cap Capability // string
    cap = "HOME"
    fmt.Print(string(caps_list[cap]))
}  

为什么不接受它?毕竟是一个字符串。

您可以在这里尝试我的代码:
https://play.golang.org/p/r-h9Hu8_eoM

2 个答案:

答案 0 :(得分:0)

否,它不是字符串。它是一种类型,其基本类型是字符串。

因此确切的类型很重要。即使这两种类型都具有整数基本类型,也不能将摄氏度添加到华氏度。

答案 1 :(得分:0)

只需更改为在上限上使用WITH cte (id, tag, child_id, parent) AS ( SELECT id, tag, child_id, id FROM demo WHERE id NOT IN(SELECT child_id FROM demo WHERE child_id IS NOT NULL) UNION ALL SELECT demo.id, demo.tag, demo.child_id, cte.parent FROM demo JOIN cte ON cte.child_id = demo.id ) SELECT parent, tag FROM cte WHERE tag IS NOT NULL UNION SELECT id, tag FROM demo WHERE tag IS NOT NULL ORDER BY parent, tag

string