猿问

如何在Go中逐行打印不带括号的切片中的元素?

package main


import "fmt"


func main() {

    var s []int

    s = append(s, 2, 3, 4)

    printSlice(s)

}


func printSlice(s []int) {

    fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)

}

游乐场:https://play.golang.org/p/tx8gmx5eR7B


输出:


len=3 cap=4 [2 3 4]

输出应该是:


2

3

4

我想要它没有循环。


拉风的咖菲猫
浏览 203回答 3
3回答

慕田峪7331174

在 Go 中逐行打印不带括号的切片中的元素。评论:我想要没有循环的例如,package mainimport "fmt"func printSlice(s []int) {    if len(s) == 0 {        return    }    fmt.Println(s[0])    printSlice(s[1:])}func main() {    var s []int    s = append(s, 2, 3, 4)    printSlice(s)}游乐场:https://play.golang.org/p/ISXdbjTrfSt输出:234

慕的地8271018

使用值和括号创建字符串。打印不包括括号的子字符串,瞧。strings.Trim 或者按照 JimB 在评论中的建议使用。temp := fmt.Sprintf("%v", s)fmt.Printf("len=%d cap=%d \n%v\n", len(s), cap(s), strings.Join(strings.Split(temp[1:len(temp)-1], " "), "\n"))输出:len=3 cap=4 234

繁华开满天机

如果您不想使用 fmt.Println 而只使用 printf 和切片范围而不计算 len,那么这样的方法就可以工作。package mainimport "fmt"func main() {    var s []int    s = append(s, 2, 3, 4)    printSlice(s)}func printSlice(s []int) {       for _, value:= range s {         fmt.Printf("%v\n", value)       }}
随时随地看视频慕课网APP

相关分类

Go
我要回答