【go】go语言中同一个package下的文件相互引用怎么做?
如题在lesson目录下有
package lessontype Rectangle struct {
Width, Height float64
}
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
以及
package lessonimport (
"math"
)
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return c.Radius * c.Radius * math.Pi
}
我现在写了一个基础的
package lessonimport (
"fmt"
)
func Say(s string) {
fmt.Println(s)
}
想让计算长方形和圆的对象都有say这个方法,在import的时候回说不允许import 循环,请问遇到这种情况,在同名package下应该怎么解决?
同一个package下引用方法不用前置包名。不知道你是不是下面这个意思?
参考代码:
package lessonimport (
"math"
)
type Circle struct {
Radius float64
}
func (c *Circle) Area() float64 {
return c.Radius * c.Radius * math.Pi
}
package lessontype Rectangle struct {
Width, Height float64
}
func (r *Rectangle) Area() float64 {
return r.Width * r.Height
}
package lessonimport (
"fmt"
)
func Say(s string) {
fmt.Println(s)
var obj = &Rectangle{Width: 2.0, Height: 3.0}
fmt.Println(obj.Area())
}
package mainimport "test/lesson"
func main() {
lesson.Say("abc")
}
同一个package下,虽然文件不同,但还是算一个工程吧。不用import,直接可以调用里面的函数吧。
如果是同一个包下的,只要方法名或者结构首字母大写,直接可以调用,不必引用包!
go 里面一个目录为一个package, 一个package级别的func, type, 变量, 常量, 这个package下的所有文件里的代码都可以随意访问, 也不需要首字母大写.
回答
以上是 【go】go语言中同一个package下的文件相互引用怎么做? 的全部内容, 来源链接: www.h5w3.com/114106.html