以下代码来自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))
答案 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(“”)方法。此时,您可以直接通过白天
作为参数〜