为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 打印不需要的值

Golang 打印不需要的值

Go
手掌心 2022-06-13 14:57:37
我是 GoLang 的新手,正在尝试编写这个程序 -程序应该写成一个循环。在进入循环之前,程序应该创建一个大小(长度)为 3 的空整数切片。在每次通过循环期间,程序都会提示用户输入要添加到切片中的整数。程序将整数添加到切片中,对切片进行排序,并按排序顺序打印切片的内容。切片的大小必须增加以容纳用户决定输入的任意数量的整数。当用户输入字符“X”而不是整数时,程序应该只退出(退出循环)。所以我的代码是 -package mainimport (    "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 number4[0 0 0 4]Please enter a number5[0 0 0 4 5]Please enter a number1[0 0 0 1 4 5]看起来它可以打印并排序,但是我如何摆脱前三个“0”?谢谢!
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

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


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("")


        }


}


查看完整回答
反对 回复 2022-06-13
?
波斯汪

TA贡献1811条经验 获得超4个赞

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


查看完整回答
反对 回复 2022-06-13
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信