我是GoLang的新手,想写这个程序--。
程序应写成一个循环。在进入循环之前,程序应该创建一个大小(长度)为3的空整数分片。在每次通过循环的过程中,程序都会提示用户输入一个要添加到分片中的整数。程序将整数添加到分片中,对分片进行排序,并按排序顺序打印分片的内容。分片的大小必须增加,以容纳用户决定输入的任何数量的整数。只有当用户输入字符 "X "而不是整数时,程序才会退出(退出循环)。
所以我的代码是
package main
import (
"fmt"
"sort"
"strconv"
)
func main() {
mySlice := make([]int, 3)
var input string
for i := 0; i < len(mySlice); i++ {
fmt.Println("Please enter a number")
fmt.Scanln(&input)
if input == "X" {
break
}
mySlice_var, err := strconv.Atoi(input)
if err != nil {
fmt.Println("Wrong input")
continue
}
// mySlice[i] = mySlice_var
mySlice = append(mySlice, mySlice_var)
// mySlice[i] = mySlice_var
sort.Ints(mySlice)
fmt.Println(mySlice)
}
}
如果我输入例如前4,后5,再输入1,它就会给我打印出来。
Please enter a number
4
[0 0 0 4]
Please enter a number
5
[0 0 0 4 5]
Please enter a number
1
[0 0 0 1 4 5]
看起来打印和排序都还可以,但如何去掉前三个 "0 "呢,谢谢!我是GoLang新手,想写这个程序--程序应该写成循环。
希望这是你想打印的方式 ! (Iterating Over Slice , and printed only non-zero values), try this!
package main
import (
"fmt"
"sort"
"strconv"
)
func main() {
mySlice := make([]int, 3)
var input string
for i := 0; i < len(mySlice); i++ {
fmt.Println("Please enter a number")
fmt.Scanln(&input)
if input == "X" {
break
}
mySlice_var, err := strconv.Atoi(input)
if err != nil {
fmt.Println("Wrong input")
continue
}
// mySlice[i] = mySlice_var
mySlice = append(mySlice, mySlice_var)
// mySlice[i] = mySlice_var
sort.Ints(mySlice)
// fmt.Println(mySlice)
//Iterating Over Slice , and printed only non zero values
for _,v := range mySlice{
if v != 0 {
fmt.Printf("%v",v)
}
}
fmt.Println("")
}
}
mySlice := make([]int, 3)
它很好地初始化一个切片,它的大小是3,然后追加3个零来初始化它。
像这样打印。
fmt.Println(mySlice)
fmt.Println("len: ", len(mySlice))
fmt.Println("cap: ", cap(mySlice))
[0 0 0]
len: 3
cap: 3
你只能启动 init cap
mySlice := make([]int, 0, 3)
fmt.Println(mySlice)
fmt.Println("len: ", len(mySlice))
fmt.Println("cap: ", cap(mySlice))
[]
len: 0
cap: 3