我是学习围棋的新手。我读到如果我创建一个包并使用install函数,那个包将在整个程序中可用。然而,在创建以下包并运行'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 : "[email protected]",
Location : "Kochi",
}
p. PrintName()
p. PrintDetails()
我做错了什么?
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 : "[email protected]",
Location : "Kochi",
}
p. PrintName()
p. PrintDetails()
你需要把一些函数,例如main
函数。同样,当你启动一个类型时,你需要通过它的包名来引用它,例如,me:=person.Person{}
,它应该照顾type Person not found
。如果要在同一个包中调用类型或函数,则不需要这样做。如果它是相同的包,你也不需要import
它。
希望这有助于解决您的问题。如果你想在函数之外声明你的人,你应该使用var以及你不能使用函数之外的方法
package main
import (
"person"
)
var p person.Person = Person {
FirstName : "Shiju",
LastName : "Varghese",
Dob : time.Date(1979, time.February, 17, 0, 0, 0, 0, time.UTC),
Email : "[email protected]",
Location : "Kochi",
}
func main(){
p.PrintName()
p.PrintDetails()
}
导入本地包并使用它的正确方法
import person "./dirnameOfPackage"
func main(){
var p Person
p.FirstName = "yourName"
p.LastName = "lastname"
}