2015-04-08 12 views

cevap

8

olarak mailing list sivri, sadece bunu yapabilirsiniz:

func intPtr(i int) *int { 
    return &i 
} 

ve sonra

instance := foo { i: intPtr(1) } 

sık sık bunu yapmak için varsa. intPtr satır içi alır (bkz. go build -gcflags '-m' çıkışı), bu nedenle hiçbir performans cezasının olmaması gerekir.

+0

Ayrıca yapabilirsiniz: instance: = foo {i: new (int)}; foo.i = 1; 'ayrı bir işlev yazmak istemiyorsanız. – fuz

+0

Bu doğru @FUZxxl değil, '1'' int' '' int' olarak atayamazsınız. OP ile aynı duruma geri dönersiniz. –

+2

Üzgünüz, deneyin: örnek: = foo {i: new (int)}; * foo.i = 1; ' – fuz

5

Hayır, bu bir satırda yapmak mümkün değildir.

+1

Brüt. Neden olmasın diye bir fikrin var mı? Bazen gürültülü bir hattı kaldırmak için uygulamak çok mu zor? – MushinNoShin

+4

@MushinNoShin: Bir işaretçi, bir şeyin adresidir, bu yüzden ona ihtiyacın var * şey *. – maerics

+1

@maerics: bu zaten anlaşıldı, bu arka planda bellek ayırma otomatik olarak yapmak ve gereksiz paramı kodumdan tutmak için herhangi bir uygun yol olup olmadığını soruyordu. Kabul edilen cevaba bakınız. – MushinNoShin

İlgili konular