Golang 将变量声明为 NULL



根据下面的示例,我需要根据需要获取电子邮件,名字和出生日期等NullString和NullTimes,因为我的用户结构正在使用它们。如何将变量声明为 NULL

package entities
import (
    "database/sql"
    "github.com/go-sql-driver/mysql"
    "testing"
    "time"
)
var (
    email          = sql.NullString("mail@gmail.com") << Does not work
    hashedPassword = "password"
    firstName      = "Lee"
    lastName       = "Brooks"
    dateOfBirth    = time.Now
    height         = 1.85
    weight         = 101.3
)
func privacyConcernedUser() *User {
    return &User{
        Email:          email, << These all complain eg: cannot use Email (type string) as type sql.NullString in field value
        HashedPassword: hashedPassword,
        FirstName:      firstName,
        LastName:       lastName,
    }
}
sql.NullString不是

string类型的直接替代品,你必须使用它。

package main
import "database/sql"
import "fmt"
type User struct {
    Name string
}
func main() {
    var nsName sql.NullString
    if err := nsName.Scan("User's Name"); err != nil {
        panic(err)
    }
    user := &User{Name: nsName.String}
    fmt.Println(user)
}

您可以使用 nsName.Valid 检查NullString是否有效。

http://golang.org/pkg/database/sql/#NullString

sql.NullString("mail@gmail.com") << Does not work

尝试:

sql.NullString{"mail@gmail.com", true}

请参阅 http://golang.org/pkg/database/sql/#NullString

最新更新