用GoLand写Go语言时怎么对同一个包、不同包下的文件中的方法进行调用?

mob604756e54876 · · 731 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

用GoLand写Go语言时怎么对同一个包、不同包下的文件中的方法进行调用?

1 同包裹不同文件下的方法调用 方法1

目录结构:

main.go:

package main

import (
    "fmt"
)

/**
    测试同包裹不同文件下的方法调用  方法1
    设置所有文件中的package都为main才可以运行
 */
func main(){
    fmt.Println("我是main方法,将要测试相同包裹不同文件下的方法调用:")
    function1()
    function2()
}

function1.go:

package main

import "fmt"

func function1(){
    fmt.Println("我是同包裹下的方法:function1")
}

function2.go:

package main

import "fmt"

func function2(){
    fmt.Println("我是同包裹下的方法:function2")
}

需要将该包裹下所有文件的package都命名为main才可以运行,否则报错。

问题1:为什么需要将该包裹下所有文件的package都命名为main才可以运行?

而且好像只能在文件夹那里右键运行才行,如果直接在代码编辑区右键运行会报错:

这是直接在代码编辑区右键运行的结果:

问题2:为什么直接在代码编辑区右键运行会报错?

2 不同包裹不同文件下的方法调用 方法2

目录结构:

main.go:

package main

import (
    "./function1"
    "./function2"
    "fmt"
)

/**
    不同包裹下,调用不同文件中的方法 方法1
    不用每个文件中的package都是叫main了
 */
func main(){
    fmt.Println("我是main方法,将要测试不同包裹下的方法调用:")
    function1.Function1()
    function2.Function2()
}

function1.go:

package function1

import "fmt"

func Function1(){
    fmt.Println("我是不同包裹下的方法:Function1~")
}

function2.go:

package function2

import "fmt"

func Function2(){
    fmt.Println("我是不同包裹下的方法:Function2~")
}

3 方法3 针对上面的方法1

不用每个文件的package都叫main了,也可以直接在代码编辑区右键运行,感觉可以归类为方法2,但好像又和方法2有点不同

目录结构:

main.go

package main

import (
    "fmt"
    "../../call1_2"
)

/**
    测试方法调用 方法3
 */
func main(){
    fmt.Println("我是main方法,将要测试方法调用:")
    call1_2.Function1()
    call1_2.Function2()
}

function1.go:

package call1_2

import "fmt"

func Function1(){
    fmt.Println("我是方法:Function1")
}

function2.go:

package call1_2

import "fmt"

func Function2(){
    fmt.Println("我是方法:Function2")
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

731 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传