找不到Go包

问题描述 投票:-4回答:3

我是学习围棋的新手。我读到如果我创建一个包并使用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()

我做错了什么?

go
3个回答
1
投票

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它。


0
投票

希望这有助于解决您的问题。如果你想在函数之外声明你的人,你应该使用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()   
}

-1
投票

导入本地包并使用它的正确方法

import person "./dirnameOfPackage"

func main(){
    var p Person
    p.FirstName = "yourName"
    p.LastName = "lastname"
}
© www.soinside.com 2019 - 2024. All rights reserved.