这段代码出错的原因是在使用fmt.Scanf函数时,没有使用&符号来获取变量的地址。正确的写法应该是fmt.Scanf("%d", &m)。另外,由于使用了bufio.NewReader来读取输入,应该使用reader.ReadString('\n')来获取整行输入,而不是使用fmt.Scanf。以下是修复后的代码:

package main
import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	l, _, _ := reader.ReadLine()
	var t, n, s, m int
	fmt.Sscanf(string(l), "%d", &t)
	for i := 0; i < t; i++ {
		l, _, _ = reader.ReadLine()
		fmt.Sscanf(string(l), "%d%d", &n, &s)
		for j := 0; j < n; j++ {
			fmt.Fscanf(reader, "%d", &m)
			s -= m
		}
		fmt.Println(s)
		if s == 0 {
			fmt.Println("YES")
		} else {
			fmt.Println("NO")
		}
	}
}
Go 代码错误分析:`fmt.Scanf` 使用错误及修复方法

原文地址: https://www.cveoy.top/t/topic/pCAD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录