猿问

找不到 Go 包

我是学习围棋的新手。我读到如果我创建一个包并使用安装函数,该包将在我的整个程序中可用。然而,在创建以下包并运行“go install”命令后,我的程序无法使用该包:


package person


import (

 "fmt"

 "time"

)


//Person struct

type Person struct {

 FirstName, LastName string

 Dob                 time.Time

 Email, Location     string

}


//PrintName method

func (p Person) PrintName() {

  fmt.Printf("\n%s %s\n", p.FirstName, p.LastName)

}


//PrintDetails Method

func (p Person) PrintDetails() {

  fmt.Printf("[Date of Birth: %s, Email: %s, Location: %s ]\n", p.Dob.String(), p.Email,

    p.Location)

}

然后创建以下主函数要么给我“语法错误:函数主体外的非声明语句”,要么它说如果我只使用包名称就找不到包,这是我学到的我能做的


package main


import (

"person"

)


p := Person {

FirstName : "Shiju",

LastName : "Varghese",

Dob : time.Date(1979, time.February, 17, 0, 0, 0, 0, time.UTC),

Email : "shiju@email.com",

Location : "Kochi",

}


p. PrintName()

p. PrintDetails()

请问我做错了什么?


白猪掌柜的
浏览 111回答 3
3回答

千巷猫影

non declartion statement outside function body指的是你的代码的这一部分p := Person {FirstName : "Shiju",LastName : "Varghese",Dob : time.Date(1979, time.February, 17, 0, 0, 0, 0, time.UTC),Email : "shiju@email.com",Location : "Kochi",}p. PrintName()p. PrintDetails()你需要把它放在一些函数中,main例如函数。同样,当您启动一个类型时,您需要通过它的包名称来引用它,例如,me:=person.Person{}应该处理type Person not found. 如果您在同一个包中调用类型或函数,则不需要这样做。如果它是同一个包,你也不需要import它。

猛跑小猪

希望这将有助于解决您的问题。如果你想在函数之外声明你的人,你应该使用 var 以及你不能在函数之外使用方法package mainimport (    "person")var p person.Person = Person { FirstName : "Shiju", LastName : "Varghese", Dob : time.Date(1979, time.February, 17, 0, 0, 0, 0, time.UTC), Email : "shiju@email.com", Location : "Kochi",}func main(){   p.PrintName()   p.PrintDetails()   }

幕布斯7119047

导入本地包并使用它的正确方法是import person "./dirnameOfPackage"func main(){    var p Person    p.FirstName = "yourName"    p.LastName = "lastname"}
随时随地看视频慕课网APP

相关分类

Go
我要回答