使用Golang代码如何实现文件写入?

使用Golang代码如何实现文件写入? 你好,我想用Go语言将一个“Hello World”程序写入一个.go文件。 我尝试了以下方法,但没有成功。

			_ = ioutil.WriteFile("main.go", 
			"package main" +
			"import 'fmt' " +
			"func main()" +
			"{"+
				"fmt.Println('hello world')" +
			"}"
			,
			0644)
5 回复

你所说的“不起作用”是什么意思?我注意到这里的一个问题是,你的实际字符串中似乎没有任何换行符。也许可以尝试使用反引号,例如:

ioutil.WriteFile("main.go", `package main

import "format"

//...
`)

更多关于使用Golang代码如何实现文件写入?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我没有给出完整的示例。我的意思是,当你使用 "package main" + "import 'fmt'" + ... 时,最终会得到一个所有内容都在一行上的文本字符串。与其使用单独的字符串并将它们拼接在一起,不如直接用反引号 (`) 包裹字符串,这样你就不需要再将字符串拼接在一起了。

之前遗漏了某些内容,它是:

		   dataString :=
				`
			package main
			import "fmt"

			func main(){
				fmt.Println("Hello World")
			}
			`
			dataBytes := []byte(dataString)
			ioutil.WriteFile("main.go", dataBytes, 0)

我的意思是它会报错,用你的代码它会提示

too few arguments in call to ioutil.WriteFilecompilerWrongArgCount

无法将 package main import "format" //...(无类型的字符串常量“package main\n\t\t\t\timport “format”\n\t\t\t\t//…\n\t\t\t\t”)作为 []byte 类型的值用于 ioutil.WriteFilecompilerIncompatibleAssign 的参数。

你的代码存在几个问题:字符串拼接方式不正确、Go语言中导入包应该使用双引号、字符串中的单引号应该改为双引号。以下是修正后的版本:

package main

import (
    "io/ioutil"
)

func main() {
    content := `package main

import "fmt"

func main() {
    fmt.Println("hello world")
}`

    err := ioutil.WriteFile("main.go", []byte(content), 0644)
    if err != nil {
        panic(err)
    }
}

或者使用更现代的 os.WriteFile(Go 1.16+):

package main

import (
    "os"
)

func main() {
    content := `package main

import "fmt"

func main() {
    fmt.Println("hello world")
}`

    err := os.WriteFile("main.go", []byte(content), 0644)
    if err != nil {
        panic(err)
    }
}

关键修改:

  1. 使用反引号(`)创建多行字符串,避免拼接问题
  2. 导入语句使用双引号包裹包名
  3. Println 参数使用双引号
  4. 添加错误处理
  5. 文件权限 0644 表示所有者可读写,其他人只读
回到顶部