throwAway := 1
instance := foo { i: &throwAway }
tek bir satırda bunu yapmak için herhangi bir yolu benim yeni vermek zorunda kalmadan var mı i
değeri kendi ismidir (bu durumda throwaway
)?
throwAway := 1
instance := foo { i: &throwAway }
tek bir satırda bunu yapmak için herhangi bir yolu benim yeni vermek zorunda kalmadan var mı i
değeri kendi ismidir (bu durumda throwaway
)?
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.
Hayır, bu bir satırda yapmak mümkün değildir.
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
@MushinNoShin: Bir işaretçi, bir şeyin adresidir, bu yüzden ona ihtiyacın var * şey *. – maerics
@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
Ayrıca yapabilirsiniz: instance: = foo {i: new (int)}; foo.i = 1; 'ayrı bir işlev yazmak istemiyorsanız. – fuz
Bu doğru @FUZxxl değil, '1'' int' '' int' olarak atayamazsınız. OP ile aynı duruma geri dönersiniz. –
Üzgünüz, deneyin: örnek: = foo {i: new (int)}; * foo.i = 1; ' – fuz