golang - go语言中同一个package下的文件相互引用怎么做?

查看:1436
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆