我正在尝试展示列表健身课程(瑜伽,普拉提等).对于每个类类型,有几个类,所以我想分组所有瑜伽课程,以及所有普拉提课程等等.
我做了这个函数来切片并制作它的地图
func groupClasses(classes []entities.Class) map[string][]entities.Class {
classMap := make(map[string][]entities.Class)
for _, class := range classes {
classMap[class.ClassType.Name] = append(classMap[class.ClassType.Name], class)
}
return classMap
}
Run Code Online (Sandbox Code Playgroud)
问题是现在如何迭代它,根据http://golang.org/pkg/text/template/,你需要以.Key格式访问它,我不知道密钥(除非我也传递了一个切片键入模板).如何在视图中解压缩此地图.
我目前所拥有的只是
{{ . }}
Run Code Online (Sandbox Code Playgroud)
它显示如下:
map[Pilates:[{102 PILATES ~/mobifit/video/ocen.mpg 169 40 2014-05-03 23:12:12 +0000 UTC 2014-05-03 23:12:12 +0000 UTC 1899-12-30 00:00:00 +0000 UTC {PILATES Pilates 1 2014-01-22 21:46:16 +0000 UTC} {1 leebrooks0@gmail.com password SUPERADMIN Lee Brooks {Male true} {1990-07-11 00:00:00 +0000 UTC true} {1.85 true} {88 true} 2014-01-22 21:46:16 +0000 UTC …Run Code Online (Sandbox Code Playgroud) 我正在开发一个允许会员进行调查的应用程序(会员与Response有一对多的关系).Response保存member_id,question_id及其答案.
调查全部或全部提交,因此如果该成员的响应表中有任何记录,则他们已完成调查.
我的问题是,如何重新编写下面的查询,以便它实际工作?在SQL中,这将是EXISTS关键字的主要候选者.
def surveys_completed
members.where(responses: !nil ).count
end
Run Code Online (Sandbox Code Playgroud) MySQL需要对保留字进行反对勾选的表格.我有一个表格角色,这是一个保留字,但我已经把我的查询放在后面的刻度中,所以我可以在多行上写它(这是一个玩具查询,大的不适合一行......).
我如何逃避背蜱?
这是我的代码:
dbmap := db.InitDb()
var roles []entities.Role
query :=
` << Difficult to see with SO's code editor widget, but here is a back tick
SELECT *
FROM `Role` <<< Needs escaping
` << Difficult to see, but here is a back tick
_, err := dbmap.Select(&roles, query, nil)
if err != nil {
panic(err)
}
fmt.Println(roles)
Run Code Online (Sandbox Code Playgroud) 我正在努力学习Go,我在这里找到了一个很好的资源.
关于方法重载的示例如下:
package main
import "fmt"
type Human struct {
name string
age int
phone string
}
type Employee struct {
Human
company string
}
func (h *Human) SayHi() {
fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone)
}
func (e *Employee) SayHi() {
fmt.Printf("Hi, I am %s, I work at %s. Call me on %s\n", e.name,
e.company, e.phone) //Yes you can split into 2 lines here.
}
func main() {
sam := Employee{Human{"Sam", …Run Code Online (Sandbox Code Playgroud) 我正在尝试显示逗号分隔值的列表,并且不希望在最后一个项目后显示逗号(如果只有一个项目,则不显示唯一的项目).
我的代码到目前为止:
Equipment:
{{$equipment := .Equipment}}
{{ range $index, $element := .Equipment}}
{{$element.Name}}
{{if lt $index ((len $equipment) -1)}}
,
{{end}}
{{end}}
Run Code Online (Sandbox Code Playgroud)
当前输出:Equipment: Mat , Dumbbell ,
如何摆脱尾随逗号
尝试在切片指针上进行测距时,我不断收到此错误.
app/domain/repositories/class_repository.go:24: cannot range over classes (type *[]entities.Class)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
这是结构:
package repositories
import (
"mobifit/app/domain/entities"
)
type ClassRepository struct {
*Repository
}
func (c *ClassRepository) ClassesForLastNDays(days int) *[]entities.Class {
classes := new([]entities.Class)
query := Select("*").
From("Class").
Where("VisibleAt > CURRENT_TIMESTAMP() - INTERVAL ? DAY").
OrderBy("ClassTypeId").
Sql()
c.Repository.Select(classes, query, days)
c.populateClassRelationships(classes)
return classes
}
func (c *ClassRepository) populateClassRelationships(classes *[]entities.Class) {
for i := range classes { <<<<<<<<<<< Here is the problem
class := classes[i]
// ClassType
c.Repository.GetById(class.ClassType, class.ClassTypeId)
//Instructor
c.Repository.GetById(class.Instructor, class.ClassType.InstructorId)
// …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个基于字符串的类型的角色,我现在试图通过实现Valuer和Scanner接口来使它与数据库驱动程序一起工作
type Role string
func (r *Role) Scan(value interface{}) error {
r = (*Role)(value.(string))
return nil
}
func (r *Role) Value(value driver.Value, err error) {
if err != nil {
value = string(r)
}
}
Run Code Online (Sandbox Code Playgroud)
我一直收到错误:
The Go code app/entities/user.go does not compile: cannot convert value.(string) (type string) to type *Role
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
我正在尝试为注册#new添加一些额外的字段.由于我只需要额外的数据并且不需要不同的功能,我不明白为什么我需要覆盖控制器等.所以我做的是修改注册#new如下:

要通过清理程序启用这些额外字段,我更新了ApplicationController,如下所示:

由于某种原因,它不起作用,额外的字段作为空值进入数据库.
我正在使用Ruby 2和Rails 4 rc1,以及Devise 3.0.0.rc.
我有一个类似于下面的Rake脚本,但我想知道是否有更有效的方法来执行此操作,而不必删除数据库,运行所有迁移,重新设置数据库,然后添加示例数据?
namespace :db do
desc 'Fill database with sample data'
task populate: :environment do
purge_database
create_researchers
create_organisations
add_survey_groups_to_organisations
add_members_to_survey_groups
create_survey_responses_for_members
end
end
def purge_database
puts 'about to drop and recreate database'
system('rake db:drop')
puts 'database dropped'
system('rake db:create')
system('rake db:migrate')
system('rake db:seed')
puts 'Database recreated...'
end
def create_researchers
10.times do
researcher = User.new
researcher.email = Faker::Internet.email
researcher.save!
end
end
Run Code Online (Sandbox Code Playgroud) 假设您正在使用一个函数来返回一个bool,以确定用户是否在上个月处于活动状态.
在Ruby中:
def active_in_last_month?;end
Run Code Online (Sandbox Code Playgroud)
在C#中
public bool WasActiveInLastMonth(){}
Run Code Online (Sandbox Code Playgroud)
在Go中命名布尔谓词函数的惯用方法是什么?