使用Go在应用引擎/数据存储中的可空值

The list of supported types by datastore doesn't contain pointer types (https://cloud.google.com/appengine/docs/go/datastore/reference). How then can I represent a value that can and sometimes should be nil? For example in the following structure I need the DailyValuePercent to be nilable to explicitly say that the value is missing.

type NutritionFact struct {
    Name                string  `datastore:",noindex" json:"name"`
    DailyValuePercent   int     `datastore:",noindex" json:"dailyValuePercent"`
}

Since I can't use *int as the field type for datastore then how to represent an optional value?

Either store your ints as strings (with empty string => no value) or use a composite type like:

type NillableInt struct {
    i     int
    isNil bool  // or isNotNil bool if you want different default semantics
}

Adapt to your performance vs. memory usage requirements.

If you want your code to deal with int pointers but persist nil values in the datastore, define your struct like this:

type NutritionFact struct {
       Name                string  `datastore:",noindex" json:"name"`
       DailyValuePercent   int `datastore:"-"`
}

And implement the PropertyLoadSaver interface where you will save/load an int value and a isNil boolean.