小编use*_*984的帖子

在golang中创建TCP客户端

嗨,我试图在golang中学习一些套接字编程,我正在跟随本教程

http://synflood.at/tmp/golang-slides/mrmcd2012.html#1

以下是本教程在一页上的最终结果. https://github.com/akrennmair/telnet-chat/blob/master/03_chat/chat.go

我很困惑如何编写这个程序的客户端,我创建一个连接并拨入服务器运行的同一个端口/ IP但从那里我不知道.我有新创建的连接的read()和write()函数,但不知道在哪里划分读取或任何东西.考虑到文本输入是在服务器中进行的,我想我只需要读一些东西吗?

package main

import (
    "bufio"
    "fmt"
    "net"
    "os"
)

func main() {
    conn, err := net.Dial("tcp", "127.0.0.1:6000")
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    for {
        fmt.Println(bufio.NewReader(conn).ReadString([]byte("\n")))
    }

}
Run Code Online (Sandbox Code Playgroud)

sockets networking client tcp go

10
推荐指数
1
解决办法
2万
查看次数

在html模板golang中的许多结构的片段中访问struct变量

我正在尝试将包含许多结构的切片发送到html模板.

我有一个'post'结构

type Post struct {
  threadID int
  subject string
  name string
  text string
  date_posted string
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个类型的切片Post(posts := []Post{})

然后使用我的数据库中的行填充此切片,然后在我的模板上执行.

defer latest_threads.Close()
for latest_threads.Next(){
    var threadID int
    var subject string
    var name string
    var text string
    var date_posted string
    latest_threads.Scan(&threadID, &subject, &name, &text, &date_posted) 
    post := Post{
        threadID,
        subject,
        name,
        text,
        date_posted,
    }
    posts = append(posts, post)
}
t, error := template.ParseFiles("thread.html")
if error != nil{
    log.Fatal(error)
}
t.Execute(w, posts)
}
Run Code Online (Sandbox Code Playgroud)

程序编译/运行正常,但是从模板中查看html输出时

{{.}}
{{range .}} …
Run Code Online (Sandbox Code Playgroud)

templates go

9
推荐指数
1
解决办法
4254
查看次数

在golang html模板中访问{{range.}}范围之外的struct变量

<!DOCTYPE html>
<html>
<head>
    <title> Test </title>
</head>
<body>
    <div>
        <h2>Reply</h2>
        <form action="/post/{{$threadID}}" method="POST">
        <input type="text" name="subject" />
        <input type="text" name="name" value="Anonymous" />
        <input type="text" name="message" />
        <input type="submit" value="submit" />
        </form>
    </div>
    <div>
        {{range .}}
        {{$threadID := .ThreadID}}
        <h3>{{.Subject}}</h3>
        <h3>{{.Name}}</h3>
        <div>{{.DatePosted}}</div>
        <div><p>{{.Text}}</p></div>
        <br /><br />
        {{end}}
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

我有这个模板,在页面顶部有一个表单需要发送任何一个帖子的threadID(它们都是相同的,所有帖子都有一定的threadID),这显然不是工作,我唯一的另一个想法就是这样

{{range .}}
    {{if $threadID == nil}}
        $threadID := .ThreadID
        //build the form same as above
    {{end}}
    <h3>{{.Subject}}</h3>
    <h3>{{.Name}}</h3>
    <div>{{.DatePosted}}</div>
    <div><p>{{.Text}}</p></div>
    <br /><br />
{{end}}
Run Code Online (Sandbox Code Playgroud)

如果上述任何一个不清楚,这是Post结构和方法.

type Post struct {
threadID …
Run Code Online (Sandbox Code Playgroud)

html templates go

6
推荐指数
2
解决办法
8054
查看次数

标签 统计

go ×3

templates ×2

client ×1

html ×1

networking ×1

sockets ×1

tcp ×1