You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用go-ini的mapTo函数映射嵌入结构体时的问题

go-ini嵌入结构体映射配置失效的解决方法

当使用包含嵌入结构体的TestData类型作为MapTo参数时,配置无法正常映射,变量data为空,但直接使用EmbeddedTestData可以正常运行。

解决方案

给TestData中的嵌入结构体字段添加ini:""标签,让go-ini库递归处理嵌入结构体的字段:

package main

import (
    "fmt"
    "github.com/go-ini/ini"
    "os"
)

type TestData struct {
    EmbeddedTestData `ini:""` // 添加空ini标签,告知库解析嵌入字段
}

type EmbeddedTestData struct {
    Port   string
    WsPath string
}

func main() {
    inidata, err := ini.Load("config.ini")
    if err != nil {
        fmt.Printf("Fail to read file: %v", err)
        os.Exit(1)
    }

    data := new(TestData)
    err = inidata.Section("clientServer").MapTo(data)
    if err != nil {
        fmt.Printf("MapTo failed: %v", err)
        os.Exit(1)
    }
    fmt.Println("Content in variable 'data': ", data)
}

原因说明

go-ini的MapTo方法默认不会自动解析匿名嵌入结构体的字段,通过给嵌入字段添加ini:""标签,显式告诉库需要递归处理该结构体的内容,这样配置段中的Port和WsPath就能正确映射到TestData的内嵌字段中。

内容的提问来源于stack exchange,提问作者Tompkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 03:42:16