在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)
}
原来要这样,声明全局变量及类型,类型用反射获取,然后把逻辑写在init函数中,init函数在main函数之前执行。