golang - go语言中同一个package下的文件相互引用怎么做?
本文介绍了golang - go语言中同一个package下的文件相互引用怎么做?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
如题在lesson目录下有
package lesson
type Rectangle struct {
Width, Height float64
}
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
以及
package lesson
import (
"math"
)
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return c.Radius * c.Radius * math.Pi
}
我现在写了一个基础的
package lesson
import (
"fmt"
)
func Say(s string) {
fmt.Println(s)
}
想让计算长方形和圆的对象都有say这个方法,在import的时候回说不允许import 循环,请问遇到这种情况,在同名package下应该怎么解决?
解决方案
同一个package下引用方法不用前置包名。不知道你是不是下面这个意思?
参考代码:
package lesson
import (
"math"
)
type Circle struct {
Radius float64
}
func (c *Circle) Area() float64 {
return c.Radius * c.Radius * math.Pi
}
package lesson
type Rectangle struct {
Width, Height float64
}
func (r *Rectangle) Area() float64 {
return r.Width * r.Height
}
package lesson
import (
"fmt"
)
func Say(s string) {
fmt.Println(s)
var obj = &Rectangle{Width: 2.0, Height: 3.0}
fmt.Println(obj.Area())
}
package main
import "test/lesson"
func main() {
lesson.Say("abc")
}
这篇关于golang - go语言中同一个package下的文件相互引用怎么做?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文