在结构中切片,不能在切片文字中使用 int64 类型作为 int

我首先尝试获取用户输入。


此阶段的输入应该是一个单一的 uint,但是,如果用户输入是 2,那么我想让我的程序创建 2 个三角形,其中包含额外的 2 个用户输入,其形式为 (int int int float)。例如)3 2 3 0.4。


所以我创建了三角形结构,它有边切片和 Gs,指的是灰度,你现在不必担心灰度。所以这是我的代码:


type triangle struct {

    Sides []int

    Gs    float64

}


func main() {

    var triangles []triangle


    scanner := bufio.NewScanner(os.Stdin)


    var number int

    fmt.Scan(&number)


    i := 0

    for i < number+1 {

        scanner.Scan()

        in := scanner.Text()


        if len(in) != 0 {

        triangleDef := strings.Split(in, " ")

        s1, _ := strconv.ParseInt(triangleDef[0], 10, 32)

        s2, _ := strconv.ParseInt(triangleDef[1], 10, 32)

        s3, _ := strconv.ParseInt(triangleDef[2], 10, 32)

        gs, _ := strconv.ParseFloat(triangleDef[3], 64)

        // fmt.Println(s1, s2, s3, gs)

        triangle := triangle{Sides: []int{s1, s2, s3}, Gs: gs}

        triangles = append(triangles, triangle)

    }

    i++

}

但是在第 45 行,triangle := triangle{Sides: []int{s1, s2, s3}, Gs: gs}对于所有 s1、s2 和 s3,它一直返回一个错误,说“无法在切片文字中将 int64 键入为 int”。我该怎么做才能让它发挥作用?


LEATH
浏览 332回答 1
1回答

炎炎设计

strconv.ParseInt返回一个int64,它是与 不同的类型int。您必须将变量转换为int以将它们放在 s 的切片中int。triangle&nbsp;:=&nbsp;triangle{Sides:&nbsp;[]int{int(s1),&nbsp;int(s2),&nbsp;int(s3)},&nbsp;Gs:&nbsp;gs}见:https ://tour.golang.org/basics/13
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go