Использование []interface{}
[]int
отличается от []interface{}
.Если []interface{}
вам подходит, создайте и верните это:
arr := make([]interface{}, 1)
Например, если вы вернете этот фрагмент:
func PanicStation(this js.Value, args []js.Value) interface{} {
return []interface{}{1, "two"}
}
Запуск PanicStation()
в консоли JavaScript будет выводить:
> PanicStation()
> (2) [1, "two"]
Возвращение типизированного массива
Документация js.ValueOf()
подробно описывает, какие типы поддерживаются и как они преобразуются:
| Go | JavaScript |
| ---------------------- | ---------------------- |
| js.Value | [its value] |
| js.TypedArray | typed array |
| js.Func | function |
| nil | null |
| bool | boolean |
| integers and floats | number |
| string | string |
| []interface{} | new array |
| map[string]interface{} | new object |
Обратите внимание, что в JavaScript можно вернуть значение, которое будет типизированным массивом.Для этого используйте js.TypedArray
в Go (получено как js.TypedArrayOf()
).Поддерживаются следующие типы:
Поддерживаются следующие типы: [] int8, [] int16, [] int32, [] uint8, [] uint16, [] uint32, [] float32 и [] float64.Передача неподдерживаемого значения вызывает панику.
Вот пример, как это сделать:
func PanicStation(this js.Value, args []js.Value) interface{} {
return js.TypedArrayOf([]int32{1, 2})
}
На этот раз вызов PanicStation()
из JavaScript, вывод будет:
> PanicStation()
> Int32Array(2) [1, 2]