如何将int类型的切片转换为string类型的切片



我像这样创建了一个int类型的切片:

list_of_id := []string {1,2,3,4}

我的代码将做一个检查,如果变量在切片(list_of_id):

func contains(s [] int, input int) bool {
for _, v := range s {
if v == input {
return true
}
}
return false
}
func main() {
list_of_id := [] int {1,2,3,4}
fmt.Println(contains(list_of_id, 1))
}

我想创建一个函数,它可以灵活地输入1"1"

我的意图是创建一个ifelse条件,其中int[] int {1,2,3,4}的切片将被转换为字符串[] string {"1","2","3","4"}的切片以再次检查。

我不知道该怎么做。我试着用谷歌搜索,但我找到的是一个将[] int {1,2,3,4}转换为"{1,2,3,4}"的解决方案

import "strconv"
func contains(s [] int, input interface{}) bool {
switch i := input.(type) {
case int:
for _, v := range s {
if v == i {
return true
}
}
case string:
for _, v := range s {
if strconv.Itoa(v) == i {
return true
}
}
}
return false
}

https://play.golang.org/p/02J1f77n_aM

package main
import (
"fmt"
"strconv"
)
func contains(s []int, input interface{}) bool {
var c int
var err error
switch input.(type) {
case int:
c = input.(int)
case string:
tmp := input.(string)
c, err = strconv.Atoi(tmp)
}
if err != nil {
return false
}
for _, v := range s {
if v == c {
return true
}
}
return false
}
func main() {
list_of_id := []int{1, 2, 3, 4}
fmt.Println(contains(list_of_id, 3))
fmt.Println(contains(list_of_id, 5))
fmt.Println(contains(list_of_id, "1"))
fmt.Println(contains(list_of_id, "6"))
}

这里例子

最新更新