附加到一部分结果

丹尼尔·尼尔:

我正在尝试创建一片sql结果,可以将其传递给模板以显示给用户。我有以下内容:

type Post struct {
  Title string
}

func landing(w http.ResponseWriter, r *http.Request){
  posts := make([]Post, 0)
  conn := OpenConnection()
  defer conn.Close()
  rows, err := conn.Query("SELECT p.title FROM posts p LIMIT 100")
  if err != nil {
    fmt.Println(err)
  } else {
    for rows.Next() {
      var title string
      rows.Scan(&title)
      posts := append(posts, Post{Title: title}) //error thrown here
    }
  }
  t, _ := template.ParseFiles("home.html")
  t.Execute(w, posts)
}

func main() {
  http.HandleFunc("/", landing)
}

在编译时,我得到了错误posts declared and not used如果我fmt.Println(posts)在append调用之后进行编译,但它似乎是在每次迭代时重置post的值,而不是追加。

正确的方法是什么?

peterSO:

声明和范围

声明将非空白标识符绑定到常量,类型,变量,函数或包。程序中的每个标识符都必须声明。不能在同一块中声明两次标识符,也不能在文件和包块中声明任何标识符。

Declaration   = ConstDecl | TypeDecl | VarDecl .
TopLevelDecl  = Declaration | FunctionDecl | MethodDecl .

声明的标识符的范围是源文本的范围,其中标识符表示指定的常量,类型,变量,函数或包。

Go使用块在词法范围内:

  • 预定义标识符的范围是Universe块。
  • 表示在顶层(任何函数之外)声明的常量,类型,变量或函数(但不是方法)的标识符的范围是package块。
  • 导入的程序包标识符的范围是包含导入声明的文件的文件块。
  • 表示功能参数或结果变量的标识符的范围是功能主体。
  • 在函数内部声明的常量或变量标识符的范围始于ConstSpec或VarSpec的末尾(对于简短变量声明,为ShortVarDecl),并终止于最里面的包含块的末尾。
  • 在函数内部声明的类型标识符的范围始于TypeSpec中的标识符,并在最里面的包含块的末尾结束。

在块中声明的标识符可以在内部块中重新声明。内部声明的标识符在范围内,它表示内部声明声明的实体。

简短的变量声明

简短的变量声明使用以下语法:

ShortVarDecl = IdentifierList ":=" ExpressionList .

这是带有初始化表达式但没有类型的常规变量声明的简写:

"var" IdentifierList = ExpressionList .

与常规变量声明不同,短变量声明可以重新声明变量,前提是它们最初是在同一块中以相同类型声明的,并且至少一个非空白变量是新变量。因此,重新声明只能出现在多变量简短声明中。重新声明不会引入新的变量;它只是为原始值分配一个新值。

posts在内部作用域中有一个简短的变量声明因此,posts不使用内部作用域中的short变量声明

posts := make([]Post, 0)
{
    posts := append(posts, Post{Title: title}) //error thrown here
}

您需要分配给posts在外部作用域中,在内部作用域中声明的变量。

posts := make([]Post, 0)
{
    posts = append(posts, Post{Title: title})
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Java字节数组的一部分附加到StringBuilder

如何追加到数组的一部分?[[]]

是否可以在Power Query中将表的一部分附加到同一表的底部?

提取字符串的一部分并将其附加到 PHP 中的末尾

将文字附加到正则表达式匹配项的一部分

如何使用Xcode附加到Firebase实时数据库的一部分

一种结果排序另一部分结果

从一个文件复制一行的一部分,并使用额外的文本附加到另一个文件

Classloader是JVM的一部分还是JRE的一部分?

取弦的一部分,并与另一部分

提取json的一部分并在UNIX shell脚本中附加属性

如何用附加条件替换字符串的一部分

运行时如何在XML文件中附加xml的一部分?

.bat文件,它将文本附加到.txt的每一行中,包括该行本身的一部分

获取行的一部分并追加到同一行

VBA遍历范围(如果匹配):将行的一部分和特定的列标题附加到新表中的表中

如何删除文件基本名称的一部分并将其附加到文件名称的末尾?

使用命令提示符将文件名附加到文件夹名称的一部分

迭代列表中的字符串元素并将该字符串的一部分附加到空列表中

mysql 在列结果的一部分上不同

Python NetCDF4返回结果的一部分

将“ whoami”的结果用作别名的一部分

python-从查询结果中获取字符串的一部分

我如何迭代从Mongodb返回的arrayList作为结果的一部分?

重用已选择的SQL查询结果的一部分-也不要重复自身

获取原始文档字段作为汇总结果的一部分

努力提取漂亮的汤结果集的一部分

在re.findall()结果中替换字符串的一部分

如果发生异常,则返回结果的一部分