Golang 打印不需要的值



我是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"? 谢谢!

希望这是您想要打印的方式!(遍历切片,只打印非零值(,试试这个!

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

您只能初始化初始化上限

mySlice := make([]int, 0, 3)
fmt.Println(mySlice)
fmt.Println("len: ", len(mySlice))
fmt.Println("cap: ", cap(mySlice))
[]
len:  0
cap:  3

最新更新