2013-07-11 6 views
7

非複合リテラルへのポインタを得るための確立されたパターンがありますか?非複合リテラルへのポインタ

x := 5 
y := &x 

上記のコードは機能しますが、非常に冗長です。

+0

私はこのコードで短縮できるものは見当たりません。変数xへのポインタが必要ですか? – topskip

+0

これはもっと簡潔になる方法もわかりません。 –

+0

「強く冗長」?私はそのようなものを書く必要がありました... – Volker

答えて

8

私はxの唯一のポイントは、intを割り当てることであることを正しく理解していれば、私はさらに、「冗長」何かをお勧めします:私はあなたが持っているものよりも、それがどの短くなって表示されていない

y := new(int) 
*y = 5 

を。 &オペレータrequiresオペランドがアドレス可能か複合リテラルかのどちらかであるため、アドレス可能なものを得るために何をやっているのか、私が示唆したことをして&を避けることができます。

+2

一般的なタイプの場合は、 の関数でラップすることができます。func intPtr(int)* int {return&i} func main() { y:= intPtr(5) } http://play.golang.org/p/bIOUAua2b5 – losinggeneration

関連する問題