SORU
19 Kasım 2009, PERŞEMBE


Nasıl verimli bir şekilde Gidip dizeleri bitiştirmek için?

String ilkel bir tür, salt okunur değil, her düzenleme yeni bir dize oluşturur.

Eğer birçok kez ortaya çıkan dize uzunluğunu bilmeden dizeyi bağlamak istiyorsanız, bunu yapmak için en iyi yolu nedir?

Naif şekilde olacaktır:

s := ""
for i := 0; i < 1000; i   {
    s  = getShortStringFromSomewhere()
}
return s

ama bu çok verimli görünmüyor.

CEVAP
19 Kasım 2009, PERŞEMBE


En iyi yolu bytes paketi kullanmaktır. io.Writer uygulayan Buffer Bir tür vardır.

package main

import (
    "bytes"
    "fmt"
)

func main() {
    var buffer bytes.Buffer

    for i := 0; i < 1000; i   {
        buffer.WriteString("a")
    }

    fmt.Println(buffer.String())
}

Bu O(n) zaman yapar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • isupportthegosselins

    isupporttheg

    6 Aralık 2009
  • nigahiga

    nigahiga

    21 Temmuz 2006