Это работает во всех браузерах -
new Date ('2001/01/31 12:00:00 AM')
new Date('2001-01-31 12:00:00')
Формат: YYYY-MM-DDTHH: mm: ss.sss
Подробности: http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
p["HM"]
не является довольно регулярным адресуемым значением : хэш-карты могут расти во время выполнения , а затем их значения перемещаются в памяти, а старые местоположения становятся устарели. Если значения в картах рассматривались как обычные адресуемые значения, эти внутренние функции реализации map
были бы открыты.
Итак, p["HM"]
- это немного другая вещь, называемая выражением индекса в спецификации; если вы будете искать спецификацию для фразы «выражение индекса», вы увидите, что вы можете делать с ними определенные вещи, например, читать их, назначать им и использовать их в выражениях increment / decment (для числовых типов). Но вы не можете все. Они, возможно, предпочли реализовать специальные случаи more , чем они, но я предполагаю, что они не просто упростили ситуацию.
Ваш подход кажется хорошим здесь - вы измените его на обычное назначение, одну из специально разрешенных операций. Другой подход (возможно, хорош для больших структур, которые вы хотите избежать копирования?) - это сделать значение карты регулярным старым указателем , что вы можете изменить базовый объект с помощью:
package main
import "fmt"
type Person struct {
name string
age int
}
type People map[string]*Person
func main() {
p := make(People)
p["HM"] = &Person{"Hank McNamara", 39}
p["HM"].age += 1
fmt.Printf("age: %d\n", p["HM"].age)
}
левая сторона задания должна быть «адресуемой».
https://golang.org/ref/spec#Assignments
Каждый операнд левой стороны должен быть адресуемым, выражением индекса карты или (только для = присваивания) пустым идентификатором.
blockquote>и https://golang.org / ref / spec # Address_operators
Операнд должен быть адресуемым, то есть либо переменной, либо указателем, либо индексированием фрагмента; или селектор поля адресного структурного операнда; или операцию индексирования массива адресного массива.
blockquote>как комментарий @ twotwotwo,
p["HM"]
не адресуется. но, нет такого определения, покажите, что такое «адресуемый операнд структуры» в sepc. Я думаю, что они должны добавить описание для этого.