登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-02-27 21:57:25 268浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《在结构内部切片,不能在切片文字中使用 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},它不断返回错误,提示“cannot type int64 as int in sliceliteral”所有 s1、s2 和 s3。我应该做什么才能让它发挥作用?


解决方案


strconv.parseint 返回 int64,它与 int 是不同的类型。您必须将变量转换为 int 才能将它们放入 ints 的切片中。

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

参见:https://tour.golang.org/basics/13

好了,本文到此结束,带大家了解了《在结构内部切片,不能在切片文字中使用 int64 类型作为 int》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>