110 lines
1.7 KiB
Markdown
110 lines
1.7 KiB
Markdown
# go-lang-anko 脚本语法指南
|
||
|
||
## 简介
|
||
`anko` 是一个用 Go 编写的轻量级脚本引擎,支持动态执行 Go 风格的脚本代码。它适用于需要嵌入脚本功能的 Go 应用程序。
|
||
|
||
## 基本语法
|
||
|
||
### 变量声明与赋值
|
||
```go
|
||
// 声明变量并赋值
|
||
x = 42
|
||
name = "anko"
|
||
|
||
// 多变量赋值
|
||
a, b = 1, 2
|
||
```
|
||
|
||
### 控制结构
|
||
#### if 语句
|
||
```go
|
||
if x > 0 {
|
||
println("x is positive")
|
||
} else {
|
||
println("x is non-positive")
|
||
}
|
||
```
|
||
|
||
#### for 循环
|
||
```go
|
||
// 类似 Go 的 for 循环
|
||
for i = 0; i < 10; i++ {
|
||
println(i)
|
||
}
|
||
|
||
// 类似 while 的循环
|
||
for x < 100 {
|
||
x *= 2
|
||
}
|
||
```
|
||
|
||
#### switch 语句
|
||
```go
|
||
switch x {
|
||
case 1:
|
||
println("one")
|
||
case 2:
|
||
println("two")
|
||
default:
|
||
println("unknown")
|
||
}
|
||
```
|
||
|
||
### 函数定义与调用
|
||
```go
|
||
// 定义函数
|
||
func add(a, b) {
|
||
return a + b
|
||
}
|
||
|
||
// 调用函数
|
||
result = add(3, 4)
|
||
```
|
||
|
||
### 内置函数和标准库
|
||
`anko` 支持部分 Go 标准库函数,例如:
|
||
```go
|
||
// 字符串操作
|
||
s = "hello"
|
||
println(len(s)) // 输出 5
|
||
|
||
// 数学函数
|
||
println(math.Pi)
|
||
```
|
||
|
||
### 错误处理
|
||
```go
|
||
// 使用 try-catch 捕获错误
|
||
try {
|
||
x = 1 / 0
|
||
} catch(err) {
|
||
println("Error:", err)
|
||
}
|
||
```
|
||
|
||
## 示例代码
|
||
|
||
### 计算斐波那契数列
|
||
```go
|
||
func fib(n) {
|
||
if n <= 1 {
|
||
return n
|
||
}
|
||
return fib(n-1) + fib(n-2)
|
||
}
|
||
|
||
println(fib(10)) // 输出 55
|
||
```
|
||
|
||
### 文件操作
|
||
```go
|
||
// 读取文件内容
|
||
content = file.Read("example.txt")
|
||
println(content)
|
||
```
|
||
|
||
## 注意事项
|
||
1. **性能**:`anko` 是解释执行的,性能不如原生 Go 代码。
|
||
2. **安全性**:避免执行不可信的脚本代码。
|
||
3. **限制**:不支持 Go 的所有特性(如指针、接口等)。
|
||
4. **调试**:使用 `println` 或 `try-catch` 进行简单调试。 |