golang怎么像python一样把逻辑写在函数外面?
在python中可以这样写如文件内容:
fob = open('./file.txt', 'a')
def write(string):
fob.write(string)
def main():
for i in messages:
write(i)
fob.close()
在golang中怎么把fob写到函数外面?下面只是举的一个普通例子,我知道可以把var logfile和write函数写到main函数中,但是,如果其它函数要调用write函数怎么办?
package main
import (
"fmt"
...
)
//↓这样写不行,应该怎么做?让这个文件内的函数能使用logfile变量
var logfile, err = os.OpenFile("./test.txt", os.O_WRONLY | os.O_CREATE | os.O_APPEND, 0666)
if err != nil{
fmt.Println("open file fail")
}
func main(){
for _, v := range messages{
write(v)
}
logfile.Close()
}
func write(msg string){
logfile.WriteString(msg)
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
简单!这种方式定义变量,不能放在入口文件中(因为是从main开始执行的),把write方法和变量抽到一个模块中,就能按照python一样的写法搞了。
Python 是可以执行 .py 文件中的全局代码的。Golang 没有这个,
Golang 的执行入口是
init()
和main()
.你的Python版本就写错了。write()
和main()
根本没得到执行。大概这样吧
原来要这样,声明全局变量及类型,类型用反射获取,然后把逻辑写在init函数中,init函数在main函数之前执行。