Dokumentasi API: http://godoc.org/github.com/samuel/go-thrift
3-klausul BSD. Lihat file LISENSI.
Thrift adalah IDL yang dapat digunakan untuk menghasilkan binding klien dan server RPC untuk berbagai bahasa. Paket ini mencakup codec klien dan server, serialisasi, dan pembuatan kode untuk Go. Ini mencoba menjadi pemetaan bahasa yang lebih alami dibandingkan dengan implementasi lainnya. Misalnya saja, Go sudah memiliki gagasan tentang transportasi hemat di antarmuka ReadWriteCloser.
Sebagian besar tipe dipetakan langsung ke tipe Go asli, namun ada beberapa keunikan dan keterbatasan.
Go mendukung serangkaian jenis kunci peta yang lebih terbatas daripada Thrift
Untuk menggunakan set, tentukan bidang sebagai [] ketik dan berikan tag "set":
StringSet []string `thrift:"1,set"`
[]byte dikodekan/didekode sebagai string karena tipe biner Thrift sama dengan string pada kabel.
Paket Go net/rpc standar digunakan untuk menyediakan RPC. Meskipun demikian, satu ketidakcocokan adalah penggunaan ServiceName.Method oleh net/rpc untuk memberi nama metode RPC. Untuk menyiasatinya, Thrift ServerCodec mengawali nama metode dengan "Thrift".
Tidak ada "kelas" transportasi khusus seperti yang ada di sebagian besar perpustakaan Thrift. Sebaliknya, standar io.ReadWriteCloser
digunakan sebagai antarmuka. Jika nilainya juga mengimplementasikan antarmuka thrift.Flusher maka Flush() error
dipanggil setelah protocol.WriteMessageEnd
.
Transportasi berbingkai didukung dengan membungkus implementasi nilai io.ReadWriteCloser
dengan thrift.NewFramedReadWriteCloser(value)
Dukungan permintaan satu arah harus diaktifkan pada codec RPC secara eksplisit. Alasannya tidak diperbolehkan secara default adalah karena paket Go RPC sebenarnya tidak mendukung permintaan satu arah. Untuk menyiasati hal ini memerlukan peretasan yang agak tersendat-sendat dalam menggunakan saluran untuk melacak permintaan yang tertunda dalam codec dan memalsukan tanggapan.
Permintaan satu arah belum diterapkan di sisi server.
Subdirektori "parser" berisi parser Thrift IDL, dan "generator" berisi generator kode Go. Ini dapat diperluas untuk mencakup bahasa lain.
Cara menggunakan generatornya:
$ go install github.com/samuel/go-thrift/generator
$ generator --help
Usage of generator:
-go.binarystring
Always use string for binary instead of []byte
-go.importprefix string
Prefix for Thrift-generated go package imports
-go.json.enumnum
For JSON marshal enums by number instead of name
-go.pointers
Make all fields pointers
-go.signedbytes
Interpret Thrift byte as Go signed int8 type
$ generator cassandra.thrift $GOPATH/src/