# 数据类型 ## 类型系统 Fig 语言是动态类型语言,运行时进行类型检查。 ## 基本类型 ### Null 类型 表示空值,只有一个值 `null`。 ```dart var a = null; ``` ### Int 类型 64位有符号整数。 ```go var x = 42; var y = -100; ``` ### Double 类型 双精度浮点数。 ```go var pi = 3.14; var speed = 2.998e8; ``` ### String 类型 字符串。 ```go var s1 = "Hello"; ``` ### Bool 类型 布尔值,`true` 或 `false`。 ```go var yes = true; var no = false; ``` ## 复合类型 ### List 类型 有序集合。 ```go var list = [1, 2, 3]; var mixed = [1, "text", true]; ``` 可以通过 **length()** 方法获取长度,返回Int 通过 **get()** 方法获取指定下标,不存在的下标返回null ### Map 类型 键值对集合。 ```go var map = {"key": "value", "num": 42}; ``` 通过 **get()** 方法获取指定下标,不存在的下标返回 `null` ### Function 类型 函数。 ```go var f = func(x, y) { return x + y; }; ``` ## 自定义类型 ### 结构体定义 ```rust struct Person { name: String; age: Int; } ``` 默认字段为私有,如需声明为外部可见的字段,使用 public关键字 如 ```go struct Person { public name: String; public age: Int; public func greeting() { io.println("hello!"); } } ``` ### 创建实例 使用 `new` 关键字: ```go var p = new Person {name: "Alice", age: 20}; ``` 支持三种初始化方式: 1. 命名参数:`new Person {name: "Alice", age: 20}` 2. 位置参数:`new Person {"Alice", 20}` 3. 简写方式:`new Person {name, age}`(使用同名变量) ## 类型操作 ### 类型检查 使用 `is` 运算符: ```go var x = "hello"; io.println(x is String); // true var p = new Person {name: "Alice", age: 20}; io.println(p is Person); // true ``` ### 获取类型 使用 `value.type()` 函数(获取内部类型): ```go import std.value; var num = 42; var str = "hello"; var lst = [1, 2, 3]; io.println(value.type(num)); // 获取 num 的类型 io.println(value.type(str)); // 获取 str 的类型 io.println(value.type(lst)); // 获取 lst 的类型 ``` ## 类型转换 ### 转换函数 通过 `std.value` 模块: ```go import std.value; var str = value.string_from(42); // "42" var num = value.int_parse("123"); // 123 var dbl = value.double_parse("3.14"); // 3.14 ``` ## 错误处理 ### try-catch 语法 ```rust try { // 可能抛出异常的代码 } catch(e: ErrorType) { // 处理特定类型的错误 } catch(e: AnotherError) { // 处理另一种错误 } ```