github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/mobile/doc.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 12:09:43</date>
    10  //</624342653680488448>
    11  
    12  
    13  //包geth包含用于以太坊的简化移动API。
    14  //
    15  //此包的作用域是*不*以允许写入自定义以太坊客户端
    16  //从Go Ethereum中提取片段,而不是允许在上面写本地dapps
    17  //移动平台。在使用或扩展此包时请记住这一点!
    18  //
    19  //API限制
    20  //
    21  //由于gomobile无法在go和android/ios之间桥接任意类型,因此
    22  //公开的API需要手动包装成简化的类型,并自定义
    23  //构造器和getter/setter,以确保它们可以被有效地使用。
    24  //也从Java/Objc。
    25  //
    26  //考虑到这一点,请尝试限制此包的范围,并仅添加
    27  //移动支持不起作用的基本要素,尤其是手动
    28  //否则,同步代码将非常困难。从长远来看,我们可能会考虑
    29  //正在编写自定义库生成器,但这些生成器现在已超出范围。
    30  //
    31  //内容方面,此包中的每个文件都对应于整个go包
    32  //从Go以太坊存储库。请遵守此范围以防止
    33  //无法维护的包。
    34  //
    35  //包装指南:
    36  //
    37  //要暴露的每种类型都应该包装成它自己的平面结构,
    38  //它内部包含一个字段:原始的Go以太坊版本。
    39  //这是必需的,因为GoMobile目前无法公开命名类型。
    40  //
    41  //每当方法参数或返回类型是自定义结构时,指针
    42  //变量应始终用作语言之间的值类型
    43  //边界可能有奇怪的行为。
    44  //
    45  //类型切片应转换为单个乘法类型包装
    46  //使用“大小”、“获取”和“设置”方法执行切片。进一步切片操作
    47  //不应提供以限制远程代码的复杂性。数组应该是
    48  //尽量避免,因为它们会使边界检查复杂化。
    49  //
    50  //如果一个方法有多个返回值(例如某个返回值+一个错误),那么
    51  //在objc中作为输出参数生成。为了避免产生奇怪的名字,比如
    52  //对于它们,如果元组,请始终为输出变量分配名称。
    53  //
    54  //注意,恐慌*不能*跨越语言边界,反而会导致
    55  //进程中无法检测的分段故障。对于错误处理,只使用错误
    56  //返回,这可能是唯一的或第二个返回。
    57  package geth
    58