亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何循環訪問切片并從輸出生成一個字符串\

如何循環訪問切片并從輸出生成一個字符串\

Go
蠱毒傳說 2022-10-04 17:14:40
如何循環訪問切片并從輸出中生成新的單個字符串,然后在函數中返回該字符串?例如,如果我想讀取切片并為每個項目添加索引,則將新更改放在單個字符串中并在函數中返回:func buildString() string {  strSlice := []string{"one", "two", "three"}  for index, element := range strSlice{  fmt.Println(index, "===", element)  bigString := append(strSlice, fmt.Prinln(index, "===", element)  }return bigString}
查看完整描述

2 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

我完全同意Marc的評論,但為了完整起見,以下是您嘗試完成的可能解決方案:

func buildString(strSlice []string) string {

    var bigString string

    for index, element := range strSlice {

        bigString += fmt.Sprintf("%d === %s\n", index, element)

    }


    return bigString

}


func main() {

    strSlice := []string{"one", "two", "three"}

    result := buildString(strSlice)


    fmt.Print(result)

}

但是,請參加馬克推薦給你的圍棋之旅。


查看完整回答
反對 回復 2022-10-04
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

您可以使用,這更有效,請嘗試以下操作strings.Builder

func buildString(a []string) string {

    var sb strings.Builder

    for i, s := range a {

        sb.WriteString(strconv.Itoa(i))

        sb.WriteString(" === ")

        sb.WriteString(s)

        sb.WriteRune('\n')

    }

    return sb.String()

}

基準:


Benchmark1-8  4203799   252 ns/op   56 B/op  3 allocs/op

Benchmark6-8  5044305   280 ns/op   56 B/op  3 allocs/op

Benchmark4-8  4332459   319 ns/op   72 B/op  3 allocs/op

Benchmark5-8  2792514   371 ns/op   56 B/op  3 allocs/op

Benchmark3-8  1000000  1018 ns/op  144 B/op  8 allocs/op

Benchmark2-8  1000000  1109 ns/op  152 B/op  8 allocs/op

法典:


package main


import (

    "fmt"

    "strconv"

    "strings"

    "testing"

)


func buildString(a []string) string {

    var sb strings.Builder

    for i, s := range a {

        sb.WriteString(strconv.Itoa(i))

        sb.WriteString(" === ")

        sb.WriteString(s)

        sb.WriteRune('\n')

    }

    return sb.String()

}

func buildString6(a []string) string {

    var sb strings.Builder

    for i, s := range a {

        sb.WriteString(strconv.Itoa(i))

        sb.WriteString(" === ")

        sb.WriteString(s)

        sb.WriteString("\n")

    }

    return sb.String()

}

func buildString5(a []string) string {

    var sb strings.Builder

    for i, s := range a {

        sb.WriteString(strconv.Itoa(i))

        sb.WriteString(" === " + s + "\n")

    }

    return sb.String()

}


func buildString4(a []string) string {

    var sb strings.Builder

    b := make([]byte, 0, 10)

    for i, s := range a {

        b = strconv.AppendInt(b[:0], int64(i), 10)

        b = append(b, " === "...)

        b = append(b, s...)

        b = append(b, '\n')

        sb.WriteString(string(b))

    }

    return sb.String()

}


func buildString3(a []string) string {

    var sb strings.Builder

    for i, s := range a {

        sb.WriteString(fmt.Sprintf("%d === %s\n", i, s))

    }

    return sb.String()

}


func buildString2(strSlice []string) string {

    var bigString string

    for index, element := range strSlice {

        bigString += fmt.Sprintf("%d === %s\n", index, element)

    }

    return bigString

}


func Benchmark1(b *testing.B) {

    strSlice := []string{"one", "two", "three"}

    for i := 0; i < b.N; i++ {

        _ = buildString(strSlice)

    }

}


func Benchmark2(b *testing.B) {

    strSlice := []string{"one", "two", "three"}

    for i := 0; i < b.N; i++ {

        _ = buildString2(strSlice)

    }

}


func Benchmark3(b *testing.B) {

    strSlice := []string{"one", "two", "three"}

    for i := 0; i < b.N; i++ {

        _ = buildString3(strSlice)

    }

}


func Benchmark4(b *testing.B) {

    strSlice := []string{"one", "two", "three"}

    for i := 0; i < b.N; i++ {

        _ = buildString4(strSlice)

    }

}


func Benchmark5(b *testing.B) {

    strSlice := []string{"one", "two", "three"}

    for i := 0; i < b.N; i++ {

        _ = buildString5(strSlice)

    }

}


func Benchmark6(b *testing.B) {

    strSlice := []string{"one", "two", "three"}

    for i := 0; i < b.N; i++ {

        _ = buildString6(strSlice)

    }

}

go 版本 go1.17.1




查看完整回答
反對 回復 2022-10-04
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號