115 lines
2.4 KiB
Markdown
115 lines
2.4 KiB
Markdown
### TOML 简介
|
||
|
||
TOML(Tom's Obvious, Minimal Language)是一种配置文件格式,旨在易于阅读和编写。它的语法类似于INI文件,但更强大和灵活。
|
||
|
||
#### 基本语法
|
||
|
||
1. **键值对**:
|
||
```toml
|
||
key = "value"
|
||
```
|
||
|
||
2. **字符串**:
|
||
```toml
|
||
string = "Hello, World!"
|
||
multi_line_string = """
|
||
This is a
|
||
multi-line string.
|
||
"""
|
||
```
|
||
|
||
3. **数字**:
|
||
```toml
|
||
integer = 42
|
||
float = 3.14
|
||
```
|
||
|
||
4. **布尔值**:
|
||
```toml
|
||
boolean = true
|
||
```
|
||
|
||
5. **数组**:
|
||
```toml
|
||
array = [1, 2, 3]
|
||
```
|
||
|
||
6. **表(嵌套结构)**:
|
||
```toml
|
||
[table]
|
||
key = "value"
|
||
```
|
||
|
||
7. **数组表**:
|
||
```toml
|
||
[[array_table]]
|
||
name = "Alice"
|
||
[[array_table]]
|
||
name = "Bob"
|
||
```
|
||
|
||
### 使用 Go 的 Viper 解析 TOML
|
||
|
||
在go中,有很多的库可以解析Toml,在这里我推荐使用Viper来进行处理。Viper 是一个强大的 Go 库,用于处理配置文件,支持多种格式,不仅仅是TOML。
|
||
#### 示例代码
|
||
|
||
1. **创建 TOML 文件**(`config.toml`):
|
||
```toml
|
||
app_name = "Class"
|
||
port = 8080
|
||
|
||
[database]
|
||
host = "localhost"
|
||
port = 3306
|
||
user = "yzk_study"
|
||
password = "yzk722923"
|
||
```
|
||
|
||
2. **使用 Viper 解析 TOML**:
|
||
```go
|
||
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"github.com/spf13/viper"
|
||
)
|
||
|
||
func main() {
|
||
// 设置配置文件名和路径
|
||
viper.SetConfigName("config") // 文件名(不带扩展名)
|
||
viper.SetConfigType("toml") // 文件类型
|
||
viper.AddConfigPath(".") // 查找路径
|
||
|
||
// 读取配置文件
|
||
if err := viper.ReadInConfig(); err != nil {
|
||
panic(fmt.Errorf("Fatal error config file: %s \n", err))
|
||
}
|
||
|
||
// 获取配置值
|
||
appName := viper.GetString("app_name")
|
||
port := viper.GetInt("port")
|
||
dbHost := viper.GetString("database.host")
|
||
dbPort := viper.GetInt("database.port")
|
||
|
||
fmt.Printf("App Name: %s\n", appName)
|
||
fmt.Printf("Port: %d\n", port)
|
||
fmt.Printf("Database Host: %s\n", dbHost)
|
||
fmt.Printf("Database Port: %d\n", dbPort)
|
||
}
|
||
```
|
||
|
||
#### 运行结果
|
||
|
||
```bash
|
||
App Name: MyApp
|
||
Port: 8080
|
||
Database Host: localhost
|
||
Database Port: 5432
|
||
```
|
||
|
||
### 总结
|
||
|
||
- **TOML** 是一种易于阅读和编写的配置文件格式。
|
||
- **Viper** 是一个强大的 Go 库,支持多种配置文件格式,包括 TOML。
|
||
- 通过 Viper,可以轻松读取和解析 TOML 文件中的配置项。
|