我像这样创建了一个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"
。
我的意图是创建一个if
else
条件,其中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"))
}
这里例子