arrays - 在结构中切片,不能在切片文字中使用 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”。我该怎么做才能让它发挥作用?
解决方案
strconv.ParseInt
返回一个int64
,它是与 不同的类型int
。您必须将变量转换为int
以将它们放在 s 的切片中int
。
triangle := triangle{Sides: []int{int(s1), int(s2), int(s3)}, Gs: gs}
推荐阅读
- typescript - 为什么这个箭头函数与签名相同的非箭头函数不一样?
- python - 将共享的“参数”模块合并到具有多个子模块的python程序中?
- react-native - 更改 react-native-elements 中的输入图标颜色
- node.js - AWS EC2 实例(生产)中的 PostGres 超时错误
- php - 此登录代码的 mysqli 等效项是什么?
- python - 如何解决在 Mac 上运行的 Python 中的导入错误?
- python-3.x - sqlite3 错误:您没有为绑定 1 提供值
- uwp - 媒体基础库中的 UWP AAC 编码,未注册类
- php - Bootstrap手风琴在选择另一个后不会折叠
- c# - C# 无法避免嵌套的 try-catch