go - 在数组/切片中转换项目值
问题描述
我想创建一个新数组,其中每个值是原始数组中相应值的 2 倍,我的代码有什么问题?
func main() {
myArray := []string{"1", "2", "3"}
var newArray = []string
for i, arr := range myArray {
newArray = newArray[i] * 2
}
fmt.Println(newArray)
}
解决方案
- 使用整数切片而不是字符串切片。即
[]string{"1", "2", "3"}
->[]int{1, 2, 3}
。 - 类型不是值。ie
var newArray = []string
是一个无效的声明。要初始化一个空切片省略=
运算符,或者使用复合类型文字,或者在这种情况下甚至更好,使用make
长度为myArray
. - 未使用的块变量在 Go 中是非法的。即
arr
infor i, arr := myArray {
没有在循环中使用,因此会导致编译时错误。 - 您不能将字符串与整数相乘。即
newArray[i] * 2
wherenewArray
is of type[]string
是非法的,会导致编译时错误。 - 您不能更改变量的类型。即
newArray = newArray[i] * 2
ifnewArray
is of type[]int
该语句是非法的,因为newArray[i] * 2
将评估为int
并且您不能分配int
给 type 的变量[]int
。
func main() {
myArray := []int{1, 2, 3}
newArray := make([]int, len(myArray))
for i := range myArray {
newArray[i] = myArray[i] * 2
}
fmt.Println(newArray)
}
推荐阅读
- c# - UWP 无法解析程序集 System.Windows.Forms
- python - 无法检索或解析页面:coursera 'python for everyone' assignment(邮件列表数据)
- java - 如何从其中一个属性的字符串值中获取枚举值
- maven - 如何将maven surefire转换为gradle?
- c++ - 项目引发异常类 EIdInterceptPropInvalid 并带有消息“拦截值无效”。进程已停止
- reactjs - 反应固定大小的文本块
- java - Spring Boot 应用程序中的自定义异常失败
- sql - 将带有单引号的数据修剪成表格的问题?
- python-3.x - 尝试执行以下代码时使数组分配索引超出范围。有人可以解释为什么下面的代码是错误的吗?
- r - 当`bartlett.test`时`所有观察都在同一个组中`