Links

Dinamik Değişkenler

Daha önceki bölümlerden de gördüğümüz üzere Go, dinamik atamayı desteklemiyor. Ama bunun elbette bir yöntemi var. Bunun için interface'den faydalanabiliriz.
Örnek:
package main
import (
"fmt"
)
//dinamik atama yapabilmek için önce boş bir interface oluşturalım
type dynamic interface{}
func main() {
//x değişkenimizin tipini interface olarak belirleyelim
var x dynamic
//x'e integer tipinde değer atayalım
x = 13
//x'in tipini ve değerini ekrana bastıralım
fmt.Printf("%T:%v\n", x, x) //int:13
//Daha sonradan x'e string tipinde değer atayalım
x = "selam"
//x'in tipini ve değerini ekrana bastıralım.
fmt.Printf("%T:%q\n", x, x) //string:"selam"
}
Yukarıdaki örnekte görüldüğü üzere x değişkenimize hangi tipte atama yaparsak, x değerin tipine dönüşüyor.

Any

Go'ya gelen güncellemeden sonra interface{} yazmak yerine any yazarsanız aynı işlemi görür.
var degisken any