登录
首页 >  Golang >  Go问答

Gotest - 不能使用 int 文字(int 类型)作为字段值中的类型参数

来源:stackoverflow

时间:2024-04-15 15:06:36 352浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《Gotest - 不能使用 int 文字(int 类型)作为字段值中的类型参数》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我正在尝试使用表测试来测试基本的求和函数。这是函数:

func sum(nums []int) int {
    sum := 0
    for _, n := range nums {
        sum += n
    }
    return sum
}

我确实知道错误出在表参数上,但我不明白为什么 golang 不接受测试。如果能有一些澄清那就太好了。请参阅下面的测试和错误:

import (
    "testing"
)

func TestSum(t *testing.T) {

    type args struct {
        nums []int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        {"test", []int{3, 4}, 7},
        {"test", []int{3, 3}, 6},

    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Sum(tt.args.nums); got != tt.want {
                t.Errorf("Sum() = %v, want %v", got, tt.want)
            }
        })
    }
}

不能使用 []int 文字(类型 []int)作为字段值 中的类型参数


解决方案


这是因为你的匿名结构的第二个字段是 args,而不是 []nums

您应该将其初始化为显式键入的 args 值。

{"test", args{nums: []int{3, 4}}, 7},

或者,如果您更喜欢无字段结构文字:

{"test", args{[]int{3, 4}}, 7},

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Gotest - 不能使用 int 文字(int 类型)作为字段值中的类型参数》文章吧,也可关注golang学习网公众号了解相关技术文章。

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