2016-04-01 21 views
0

Ben yeni bir çeşit golang ve ayrıca programlama için yeni bir tür. Ve git benim için çok zor geçti. Bu her zaman kafamı karıştıran bir şey: veri türleri.GO: düzenli dizgeye dizi/dilim

./main.go:40: cannot use recorded (type string) as type SVC in append 

ve ben ekleme çağrısı değerlerini ters, eğer tükürür olacaktır: Eğer (değil oyun alanında) bu çalıştırırsanız o zaman tükürmek olacak

./main.go:40: first argument to append must be slice; have string 

deniyorum neler yapmak, ev dizinindeki tüm öğeleri kapmak, tüm değerleri bir diziye yapılan değişikliklerle eklemek, sonra diziyi ioutil kullanarak bir dosyaya koymaktır. Tek istediğim (şu andan itibaren), func kaydındaki değerleri dilime eklemektir. Herhangi biri yardım edebilir mi? Sizin type SVC struct

package main 

import "os" 
import "io/ioutil" 
import "fmt" 

type SVC struct { 
     key string 
     val string 
} 

func main() { 
     os.Chdir("../../../../../../..") 
     var data, err = ioutil.ReadDir("home") 
     checkerr(err) 
     for _, data := range data { 
       fmt.Println(data.Name()) 
     } 
     os.Chdir("home/beanboybunny/repos/bux/go/src/bux") 
} 
func checkerr(err1 error) { 
     if err1 != nil { 
       fmt.Println("error") 
     } 
} 
func writer(dataname string) { 
     f := "var " 
     uname := dataname 
     q := " = VVC{\n" 
     w := " bux: 1,\n" 
     e := " op: true,\n" 
     c := "}" 

     b2 := f + uname + q + w + e + c 
     record(b2) 
} 

func record(recorded string) { 
     cache := []SVC{} 
     record SVC := recorded 
     appenda := append(cache, recorded) 
} 

cevap

0

iki özel dize alana sahiptir. Sadece bir dizi dizge istiyorsanız, SVC türüne ihtiyacınız yoktur. https://play.golang.org/p/eUKTKRxwfp

package main 

import (
    "fmt" 
    "io/ioutil" 
    "os" 
    "strings" 
) 

func main() { 
    os.Chdir("../../../../../../..") 
    var data, err = ioutil.ReadDir("home") 
    checkerr(err) 
    lines := []string{} 
    for _, data := range data { 
     fmt.Println(data.Name()) 
     lines = append(lines, buildLine(data.Name())) 
    } 
    fmt.Println(strings.Join(lines, "\n")) 
    os.Chdir("home/beanboybunny/repos/bux/go/src/bux") 
} 

func checkerr(err1 error) { 
    if err1 != nil { 
     fmt.Printf("error: %v", err1) 
    } 
} 

func buildLine(dataname string) string { 
    return fmt.Sprintf("var %s = VVC{\n bux: 1,\n op: true,\n}", dataname) 
} 
0

: Sadece özel olarak ana dizine öğelerin dönüşümü biçimlendirilmiş senin ile dizelerden oluşan bir dizi oluşturmak için çalışıyorsanız

, burada ekleme ve format dizeleri kullanımını gösteren bir başlangıçtır Metre'ye litre eklenemez. Yani, SVC kayıtlarının listesine string türünü ekleyemezsiniz.

İsterseniz []SVC çıkışı (SVC ait listesi) Bir SVC nesneye bir dize dönüşümü ve sonuna ekler bir ayrıştırıcı uygulamak gerekir gibi.

çıkışını isterseniz, SVC'u bir dizgeye dönüştüren ve ekleyeceğiniz bir serileştirici uygulamanız gerekir.

Nasıl yapılacağı, bu sorunun kapsamı dışında olan ayrı bir sorudur.