猿问

为什么我的包中的功能不起作用

我已经放入了一个小代码文件,其中$GOPATH是~/go/src. 这里我创建了一个文件夹mysrc,在那里我保存了一个文件mytest.go,如下:


package mytest

import ("fmt")

func myfn(){

  fmt.Println("My own fn")

}

我尝试使用以下文件导入上面的代码:


package main

import ("mysrc")

main(){

    myfn()

}

当我尝试运行上面的文件时,出现错误:


# command-line-arguments

./useMyfn.go:3:1: syntax error: non-declaration statement outside function body

问题出在哪里以及如何解决?感谢您的帮助。


编辑:我将主 fn 更正为,func main()但现在错误是:


# command-line-arguments

./useMyfn.go:2:9: imported and not used: "mysrc" as mytest

./useMyfn.go:4:2: undefined: myfn


qq_笑_17
浏览 89回答 1
1回答

函数式编程

你需要做几件事我建议使用与文件夹名称相同的包名称。该myfn()函数需要导出。如何做到:只需将函数名称的第一个字符设置为大写即可。package&nbsp;mysrc&nbsp;//&nbsp;<--&nbsp;1 import&nbsp;( &nbsp;&nbsp;&nbsp;&nbsp;"fmt" &nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;Myfn()&nbsp;{&nbsp;//&nbsp;<--&nbsp;2 &nbsp;&nbsp;&nbsp;&nbsp;fmt.Println("My&nbsp;own&nbsp;fn") }func语句前需要关键字main()。要访问其他包中的函数,您需要在函数名称之前写下包名称。在这种情况下,它将是mysrc.Myfn()。package&nbsp;main import&nbsp;(&nbsp; &nbsp;&nbsp;&nbsp;"mysrc") &nbsp;&nbsp;&nbsp;func&nbsp;main()&nbsp;{&nbsp;//&nbsp;<--&nbsp;3 &nbsp;&nbsp;&nbsp;&nbsp;mysrc.Myfn()&nbsp;//&nbsp;<--&nbsp;4 &nbsp;&nbsp;&nbsp;&nbsp;}
随时随地看视频慕课网APP

相关分类

Go
我要回答