2014-11-25 68 views
23

GolangRuby 's awesome_print var mı?Güzel yazdırma golang değişkeni

yakut Örneğin yazabilirsiniz:

require 'ap' 
x = {a:1,b:2} // also works for class 
ap x 

çıkışı olacaktır:

{ 
    "a" => 1, 
    "b" => 2 
} 
buldum olabilir

yakın şey Printf("%#v", x)

+2

I [go-spew] gibi (https://github.com/davecgh/go-spew). –

+2

Harici bir paket kabul edilebilirse, [güzel] 'yi (http://godoc.org/github.com/kr/pretty#example-package) düşünün. – Mark

cevap

45

, Diğer seçeneğin kullanmaktır json.MarshalIndent:

x := map[string]interface{}{"a": 1, "b": 2} 
b, err := json.MarshalIndent(x, "", " ") 
if err != nil { 
    fmt.Println("error:", err) 
} 
fmt.Print(string(b)) 

Çıktı:

{ 
    "a": 1, 
    "b": 2 
} 

Çalışma örneği: http://play.golang.org/p/SNdn7DsBjy

+0

Çoklu düzeylerde girintilemeyi sınama. https://play.golang.org/p/d3nO4Rht90 – Xeoncross

+0

Marshal, özel bir yapı olduğunda (desteklenmeyen tür hatası) girişimde sorun olur. Bunu düzeltmenin kolay bir yolu var mı? – etang

+0

@etang Size daha iyi bir cevap verebilmem için basit bir örnek göstermelisiniz (belki de oyun alanında?). Eğer karmaşıklaşırsa, türünüzü unmarshalling için JSON paket arayüzlerinden birini uygulamak zorunda kalacağınızı hayal ediyorum. –

9

Boşver, ben bir tane buldum: https://github.com/davecgh/go-spew

// import "github.com/davecgh/go-spew/spew" 
x := map[string]interface{}{"a":1,"b":2} 
spew.Dump(x) 

bir çıkış verir misiniz: Hedefiniz bir üçüncü taraf paketi ithal önlemek için ise

(map[string]interface {}) (len=2) { 
(string) (len=1) "a": (int) 1, 
(string) (len=1) "b": (int) 2 
}