Golang中如何从导入的类型创建结构体实例

Golang中如何从导入的类型创建结构体实例 我在另一个目录的包中创建了一个结构体,结构体名称为Person。现在我想在main包中创建一个person实例,并像这样使用:

func main() {
    p := Person {
		"Joe",
		"Doe",
		time.Date(1971, time.September, 1, 0, 0, 0, 0, time.UTC),
		"xxx@xxxx.com,
		"Helena",
	}
}

但这无法正常工作,而且我无法导入该包,因为在保存时导入语句会被自动移除。

3 回复

我正在学习,非常感谢

更多关于Golang中如何从导入的类型创建结构体实例的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


要使用来自其他包的类型,你需要在类型前加上包名,如下所示:

package main

import "yourpkg"

func main() {
	p := yourpkg.Person {
		"Joe",
		"Doe",
		time.Date(1971, time.September, 1, 0, 0, 0, 0, time.UTC),
		"xxx@xxxx.com",
		"Helena",
	}
}

在Go语言中,要从另一个包导入类型并创建结构体实例,需要确保以下几点:

  1. 结构体类型和字段必须导出(首字母大写)
  2. 正确导入包路径
  3. 使用包名作为前缀引用类型

以下是正确的实现方式:

目录结构:

project/
├── main.go
└── models/
    └── person.go

models/person.go:

package models

import "time"

// Person 结构体字段必须首字母大写才能被外部包访问
type Person struct {
    FirstName string
    LastName  string
    BirthDate time.Time
    Email     string
    City      string
}

main.go:

package main

import (
    "time"
    "your-project/models" // 替换为你的实际包路径
)

func main() {
    p := models.Person{
        FirstName: "Joe",
        LastName:  "Doe",
        BirthDate: time.Date(1971, time.September, 1, 0, 0, 0, 0, time.UTC),
        Email:     "xxx@xxxx.com",
        City:      "Helena",
    }
    
    // 使用结构体实例
    _ = p // 避免未使用变量错误
}

关键要点:

  • 结构体类型名 Person 首字母大写
  • 所有字段名 (FirstName, LastName 等) 首字母大写
  • 导入语句格式:import "your-module-path/models"
  • 使用 models.Person 引用类型

如果导入语句被自动移除,检查:

  1. 模块配置:确保有正确的 go.mod 文件
  2. 包路径:导入路径与实际包路径匹配
  3. 编辑器配置:检查IDE/编辑器设置

go.mod 示例:

module your-project

go 1.21

使用这种方式可以正确导入并在main包中创建Person结构体实例。

回到顶部