Go,如何导入其他包的结构和字段?

Posted

技术标签:

【中文标题】Go,如何导入其他包的结构和字段?【英文标题】:Go, how to import struct and fields of other packages? 【发布时间】:2021-12-03 09:26:46 【问题描述】:

我有下一个问题,如果我尝试导出其他包的结构,调用获取日期的方法,并使用 (struct.field) 获取字段,它不起作用

//main/other
package other

type Birthday struct
     Day string


func (b *Birthday) SetDay()
     b.Day = "10"


//main
package main

import ("main/other")

func main()
    f := other.Birthday
    f.SetDay()
    fmt.Println(f.Day) // ""   no return nothing

但是当我在结构的同一个文件中使用 func main 时,这个可以工作。

【问题讨论】:

你能出示你的go.mod文件吗? 你的实际代码能编译吗?有没有错误?在您的实际代码中,您使用的是 func (b *Birthday) SetDay() 还是可能是 func (b Birthday) SetDay() 阅读并关注 (!!) golang.org/doc/#getting-started。没有捷径,没有但我知道更好,没有但我想要,没有但随机的 YT 教程说,没有但我不需要。只需要逐字逐句。 【参考方案1】:

我刚刚测试了你的程序on playground:

package main

import (
    "fmt"
    "play.ground/foo"
)

func main() 
    f := foo.Birthday
    f.SetDay()
    fmt.Println(f.Day)

-- go.mod --
module play.ground
-- foo/foo.go --
package foo

type Birthday struct 
    Day string


func (b *Birthday) SetDay() 
    b.Day = "10"

它确实工作得很好。 确保先go mod init yourProject;详见“Tutorial: Create a Go module”。

【讨论】:

以上是关于Go,如何导入其他包的结构和字段?的主要内容,如果未能解决你的问题,请参考以下文章

go中的struct

Go语言基础之包的概念

R语言数据包自带数据集之ISwR包的melanom数据集字段解释数据导入实战

R语言数据包自带数据集之ISwR包的melanom数据集字段解释数据导入实战

Go 快速入门

Go语言基础之包