FlatBuffers 使用 Golang java 指引

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

[TOC]

定義 IDL 模型檔案

FlatBuffers的模型介面定義檔案尾碼為 .fbs

fbs 文法

基礎文法

語句使用 ; 結尾
結構體使用 {} 來限定
使用 [] 來指定一個自訂類型

範例

namespace com.my.event;table Event{    touch : [Touch];}table Touch{    x : int(id: 0);    y : int(id: 1);}root_type Event;

關鍵字

關鍵字 描述與用途
/// FlatBuffers中用 "///" 來表示注釋,且此注釋會帶入到產生的源碼檔案中
namespace 模型目錄,包結構
table 模型類標識 會產生對應標識的單個模型檔案的類
bool short int float string 預設資料類型關鍵字
enum 枚舉類資料定義
union 產生一個獨立的枚舉類
deprecated 指定deprecated,可以刪除掉此欄位
priority 設定優先權
root_type 其table產生的檔案中,除Table中欄位會產生相關函數外會另外產生GetRootAsXXX()的函數
required struct的每個欄位都為required,table的每個欄位都預設都是optional,但可以指定為required
id 設定產生指定順序,要求這個table裡面全部都寫上才生效
include 引入另一個fbs內容

範例

namespace MyGame;attribute "priority";enum Color : byte { Red = 1, Green, Blue }///union Any { Monster, Weapon, Pickup }//union Any { Monster}union Any { Monster, Weapon}struct Vec3 {  x:float;  y:float;  z:float;}/// 注釋table Monster {  pos:Vec3;  mana:short = 150;  hp:short = 100;  name:string;  friendly:bool = false (deprecated, priority: 1);  inventory:[ubyte];  color:Color = Blue;  test:Any;}table Weapon {  pos:Vec3;  mana:short = 150;}root_type Monster;root_type Weapon;

fbs 技巧

///直接嵌套structtable Monster { pos:Vec3; ...}/// 直接指定資料類型及預設值mana:short = 150;/// 指定deprecated,可以刪除掉此欄位friendly:bool = false (deprecated, priority: 1);/// 加id指定產生順序mana:short = 150 (id: 3); /// include "include_test1.fbs"; 形式,將其它.fbs檔案嵌套進來

如有加id,則table中所有欄位都要加id才可通過

產生對應語言的模型檔案

使用 flatc 產生對應語言的模型檔案

  --cpp        -c Generate C++ headers for tables/structs.  --go         -g Generate Go files for tables/structs.  --java       -j Generate Java classes for tables/structs.  --js         -s Generate JavaScript code for tables/structs.  --csharp     -n Generate C# classes for tables/structs.  --python     -p Generate Python files for tables/structs.  --php           Generate PHP files for tables/structs.
flatc -g Test.fbs

自動更新模型檔案指令碼

#!/usr/bin/env bashrm -rf flatbuffermkdir -p flatbuffer/javamkdir -p flatbuffer/gocd flatbuffer/javaflatc -j ../SimulationEvent.fbscd ..cd goflatc -g ../SimulationEvent.fbs

更新指令碼是一個範例,建議自己修改~

golang 項目中使用

安裝golang支援包

go get -u -v google/flatbuffers/go

golang官方使用Flatbuffers文檔 http://google.github.io/flatbuffers/index.html

或者 根據範例來使用

https://github.com/google/flatbuffers/tree/master/samples

java使用 (Android中也一樣)

引入依賴庫

dependencies {  compile 'com.github.davidmoten:flatbuffers-java:1.3.0.1'}

按照例子使用
https://github.com/google/flatbuffers/blob/master/samples/SampleBinary.java

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.