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

Go语言如何在其他包设置struct并传递回其定义的原始包使用

问题修复说明
  • 跨包访问权限错误:Go 仅首字母大写的标识符支持跨包访问,router包中Config结构体的some字段为小写,属于包私有成员,main包无法直接赋值,编译会直接报错。
  • 结构体初始化语法错误:main.go中结构体字面量赋值应使用冒号:而非等号=,正确写法为Some: true。
  • 实例访问逻辑错误:router.go的Sending函数中错误使用类型名Config访问字段,应使用传入的实例变量class访问,写法为class.some。

修复后代码

router.go

package router

import (
    "log"
)

type Config struct {
    Some bool // 首字母大写,开放跨包访问权限
}

func Sending(class Config){ 
    if class.Some{ // 通过实例访问字段
        log.Println("it worked")
    }
}

main.go

package main

import (    
    "router"
)

func main() {
    cfg := router.Config{
        Some: true // 使用正确的初始化语法
    }
    router.Sending(cfg)
}

可选优化:如果不希望对外暴露Config的内部字段,可在router包中新增构造方法完成初始化,无需修改字段可见性:

// router.go 新增构造函数
func NewConfig(some bool) Config {
    return Config{some: some}
}

// main.go 调用方式调整
cfg := router.NewConfig(true)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:09