我刚开始学习Go。我读到如果创建一个程序包并使用安装功能,该程序包将在整个程序中可用。但是,在创建以下软件包并运行“执行安装”命令后,该软件包对我的程序不可用:
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()
请问我在做什么错?
答案 0 :(得分: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 : "shiju@email.com",
Location : "Kochi",
}
p. PrintName()
p. PrintDetails()
您需要添加一些功能,例如main
功能。
另外,在初始化类型时,还需要使用其包名称(例如me:=person.Person{}
)来引用它,该名称应注意type Person not found
。如果要在同一包中调用类型或函数,则无需这样做。如果使用相同的软件包,则也无需import
。
答案 1 :(得分:0)
希望这将有助于解决您的问题。如果要在函数外部声明自己的人,则应使用var,并且不能在函数外部使用方法
DB::table('articles')
->leftJoin('articles', 'articles.id', '=', 'articles.user_id')
->leftJoin('news_groups', 'news_groups.id', '=', 'articles.news_group_id')
->leftJoin('magazine_groups', 'magazine_groups.id', '=', 'articles.magazine_groups_id')
->select(DB::raw('articles.id, type, title, articles.published_at, users.first_name, users.last_name, COALESCE(news_groups.name, magazine_groups.name) as group_name'))
->groupBy('articles.id');
答案 2 :(得分:-1)
导入和使用本地软件包的正确方法是
import person "./dirnameOfPackage"
func main(){
var p Person
p.FirstName = "yourName"
p.LastName = "lastname"
}