问题描述
我正在尝试首先获得用户输入。
此阶段的输入应为单个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],32)
s3,_ := strconv.ParseInt(triangleDef[2],32)
gs,_ := strconv.ParseFloat(triangleDef[3],64)
// fmt.Println(s1,s2,s3,gs)
triangle := triangle{Sides: []int{s1,s3},Gs: gs}
triangles = append(triangles,triangle)
}
i++
}
但是在第45行triangle := triangle{Sides: []int{s1,Gs: gs}
处,它对于所有s1,s2和s3始终返回错误,指出“无法在切片文字中将int64键入int”。我应该怎么做才能使其正常工作?
解决方法
strconv.ParseInt
返回一个int64
,它是与int
不同的类型。您必须将变量转换为int
,才能将它们放入int
的切片中。
triangle := triangle{Sides: []int{int(s1),int(s2),int(s3)},Gs: gs}