在函数调用中传递带参数的类型

时间:2014-07-09 17:06:49

标签: go

以下代码来自Jan Newmarch的{​​{3}}关于Go中的网络编程。在我见过的大多数Go代码中(由于我是新手,你没有(在函数调用中)传递带参数的类型。但是,在下面的代码中,你看到这一行

conn.Write([]byte(daytime))

为什么有必要在此函数调用中包含[]byte

func main() {

    service := ":1200"
    tcpAddr, err := net.ResolveTCPAddr("ip4", service)
    checkError(err)

    listener, err := net.ListenTCP("tcp", tcpAddr)
    checkError(err)

    for {
        conn, err := listener.Accept()
        if err != nil {
            continue
        }

        daytime := time.Now().String()
        conn.Write([]byte(daytime))

3 个答案:

答案 0 :(得分:3)

Conn.Write()期望该值为字节切片。由于daytime是字符串类型,因此您必须将其转换。

您可以将上述内容重写为:

daytime := []byte(time.Now().String())
conn.Write(daytime)

或者,正如@fabrizioM所写,你可以使用格式化的编辑器来转换它:

fmt.Fprintf(conn, daytime)

答案 1 :(得分:2)

另一种方法是使用

fmt.Fprintf(conn, daytime)

答案 2 :(得分:0)

因为在服务器和客户端之间传输的数据是字节。

您的情况下的白天显然是字符串格式。

所以你必须使用[] byte(白天)将其转换为字节。

无论哪种方式,您都可以导入“bufio”为每个客户端创建一个NewWriter,以及NewWriter

将使用WriteString(“”)方法。此时,您可以直接通过白天

作为参数〜