从Java到Go的代码转换

从Java到Go的代码转换,go,Go,我不知道Go的语法。谁能帮我把下面的java代码转换成谷歌的go语言 import java.io.*; class FileWrite { public static void main(String args[]) { try { // Create file FileWriter fstream = new FileWriter("out.txt"); BufferedWriter out = new BufferedWriter(

我不知道Go的语法。谁能帮我把下面的java代码转换成谷歌的go语言

import java.io.*;

class FileWrite 
{
  public static void main(String args[])
  {
    try {
      // Create file 
      FileWriter fstream = new FileWriter("out.txt");
      BufferedWriter out = new BufferedWriter(fstream);
      out.write("Hello Java");
      // Close the output stream
      out.close();
    } catch (Exception e){ //Catch exception if any
      System.err.println("Error: " + e.getMessage());
    }
  }
}
此java代码创建一个名为out.txt的文件,并在该文件上写入一个字符串(Hello java)

package main

import (
    "fmt"
    "os"
)

func main() {
    fd, err := os.Create("out.txt")
    if err != nil {
        fmt.Println(os.Stderr, err)
        return
    }
    // defer calls a function at the end of the current function.           
    defer fd.Close()

    fd.WriteString("Hello Gopher!\n")
}
我希望这有帮助。如果不清楚,请指定需要解释的部分。

例如

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
)

func main() {
    f, err := os.Create("out.txt")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer f.Close()
    wtr := bufio.NewWriter(f)
    abc := 1
    _, err = wtr.WriteString("Hello Go " + strconv.Itoa(abc) + " ok\n")
    if err != nil {
        fmt.Println(err)
        return
    }
    err = wtr.Flush()
    if err != nil {
        fmt.Println(err)
        return
    }
}

file out.txt:
Hello Go 1 ok\n
package main

import (
    "fmt"
    "os"
    "strconv"
)

func routine(fd *os.File) {
    abc := 1
    fd.WriteString("Hello Go " + strconv.Itoa(abc) + " ok\n")
    fd.WriteString("\nHello Gopher!\n")
}

func main() {
    fd, err := os.Create("out.txt")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer fd.Close()
    abc := 1
    fd.WriteString("Hello Go " + strconv.Itoa(abc) + " ok\n")
    fd.WriteString("\nHello Gopher!\n")
    routine(fd)
}

字符串文字表示从中获取的字符串常量 连接字符序列。有两种形式:生的 字符串文字和解释的字符串文字

原始字符串文字是反引号``之间的字符序列。 在引号中,除反引号外,任何字符都是合法的。价值 原始字符串的文本是由未解释的 引号之间的字符;特别是,反斜杠没有任何作用 特殊含义和字符串可能跨越多行

解释的字符串文字是介于两个字符之间的字符序列 引号为“”。引号之间的文本,不能跨越多个引号 行,形成文本的值,并使用反斜杠转义 解释为它们是字符文本(除了\'是 非法且\“合法)。三位八进制(\nnn)和两位数字 十六进制(\xnn)转义表示结果的单个字节 字符串;所有其他转义符表示(可能是多字节)UTF-8 单个字符的编码。因此在字符串文本中\377 和\xFF表示值0xFF=255的单个字节,而ÿ、\u00FF, \U000000FF和\xc3\xbf表示UTF-8的两个字节0xc3 0xbf 字符U+00FF的编码

但是,如何解决这个问题呢 亚历山德罗

比如说,

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
)

func main() {
    f, err := os.Create("out.txt")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer f.Close()
    wtr := bufio.NewWriter(f)
    abc := 1
    _, err = wtr.WriteString("Hello Go " + strconv.Itoa(abc) + " ok\n")
    if err != nil {
        fmt.Println(err)
        return
    }
    err = wtr.Flush()
    if err != nil {
        fmt.Println(err)
        return
    }
}

file out.txt:
Hello Go 1 ok\n
package main

import (
    "fmt"
    "os"
    "strconv"
)

func routine(fd *os.File) {
    abc := 1
    fd.WriteString("Hello Go " + strconv.Itoa(abc) + " ok\n")
    fd.WriteString("\nHello Gopher!\n")
}

func main() {
    fd, err := os.Create("out.txt")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer fd.Close()
    abc := 1
    fd.WriteString("Hello Go " + strconv.Itoa(abc) + " ok\n")
    fd.WriteString("\nHello Gopher!\n")
    routine(fd)
}

到目前为止,你得到了什么?你的语法有什么特别的困难吗?我不明白,如何在go中创建文件以及如何在其上书写。对不起,对于我的英语。你的“翻译”更准确,我的是自由格式的!这很好。我添加了abc:=1(整数声明)和wtr.WriteString(“Hello go”,abc,“ok\n”).Go不能将int与string一起打印?怎么可能?为什么wtr.WriteString(“Hello Go\n”)会将其带到新行?
“Hello Go\n”
是一个解释字符串文字,因此“\n”被解释为一个新行字符。这很好。我添加了abc:=1(整数声明)和fd.WriteString(“Hello Gopher!”,abc“ok\n”).Go不能将int和string一起打印?怎么可能?为什么wtr.WriteString(“Hello Gopher!\n”)会将其带到新行?