vert

package module
v0.0.0-...-ebe8c87 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 3 Imported by: 0

README

vert

Go Reference Test

Package vert provides WebAssembly interop between Go and JS values.

Install

GOOS=js GOARCH=wasm go get github.com/x0k/vert

Examples

Hello World!

Below is a trivial string value interop.

package main

import "github.com/x0k/vert"

func main() {
	v := vert.ValueOf("Hello World!")
	// Use v as a JS value.

	s := ""
	v.AssignTo(&s)
	// Use s as a Go value.
}
Structs & Objects

Go structs and JS objects interop seamlessly.

package main

import "github.com/x0k/vert"

type Data struct {
	Message string
}

func main() {
	v := vert.ValueOf(Data{
		Message: "Hello World!",
	})
	// e.g. {"Message": "Hello World!"}

	d := &Data{}
	v.AssignTo(d)
}
Tagged Struct Fields

Tagged struct fields allow defined JS field names.

package main

import "github.com/x0k/vert"

type Data struct {
	Message string `js:"msg"`
}

func main() {
	v := vert.ValueOf(Data{
		Message: "Hello World!",
	})
	// The defined JS tag names the field.
	// e.g. {"msg": "Hello World!"}

	d := &Data{}
	v.AssignTo(d)
}

Error Handling

AssignTo returns an error value.

package main

import "github.com/x0k/vert"

type Data struct {
	Message string
}

func main() {
	v := vert.ValueOf("Hello World!")

	d := &Data{}
	if err := v.AssignTo(d); err != nil {
		// Handle error.
	}
}

Why?

Package syscall/js, of the Go standard library, has limited interop support between Go and JS values.

  1. The function js.ValueOf will not accept struct types. The result panics with ValueOf: invalid value.
  2. The type js.Value. does not support an Interface or assignment method for non-basic Go values. However, the methods Bool, Int, Float and String support basic Go values.

Package vert leverages and extends syscall/js to accommodate these shortcomings.

License

Documentation

Rendered for js/wasm

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Assign

func Assign(jv js.Value, i interface{}) error

AssignTo assigns a JS value to a Go pointer. Returns an error on invalid assignments.

func ValueOf

func ValueOf(i interface{}) js.Value

ValueOf returns the Go value as a new value.

Types

type InvalidAssignmentError

type InvalidAssignmentError struct {
	Type js.Type
	Kind reflect.Kind
	// contains filtered or unexported fields
}

func (*InvalidAssignmentError) Error

func (e *InvalidAssignmentError) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL