===== llgoi ===== Introduction ============ llgoi is an interactive REPL for Go. It supports expressions, statements, most declarations and imports, including binary imports from the standard library and source imports from ``$GOPATH``. Example usage ============= .. code-block:: none (llgo) 1+1 #0 untyped int = 2 (llgo) x := 1 x untyped int = 1 (llgo) x++ (llgo) x #0 int = 2 (llgo) import "fmt" (llgo) fmt.Println("hello world") hello world #0 int = 12 #1 error () = (llgo) for i := 0; i != 3; i++ { fmt.Println(i) } 0 1 2 (llgo) func foo() { fmt.Println("hello decl") } (llgo) foo() hello decl (llgo) import "golang.org/x/tools/go/types" # golang.org/x/tools/go/ast/astutil # golang.org/x/tools/go/exact # golang.org/x/tools/go/types (llgo) types.Eval("1+1", nil, nil) #0 golang.org/x/tools/go/types.TypeAndValue = {mode:4 Type:untyped int Value:2} #1 error () = Expressions =========== Expressions can be evaluated by entering them at the llgoi prompt. The result of evaluating the expression is displayed as if printed with the format string ``"%+v"``. If the expression has multiple values (e.g. calls), each value is displayed separately. Declarations ============ Declarations introduce new entities into llgoi's scope. For example, entering ``x := 1`` introduces into the scope a variable named ``x`` with an initial value of 1. In addition to short variable declarations (i.e. variables declared with ``:=``), llgoi supports constant declarations, function declarations, variable declarations and type declarations. Imports ======= To import a package, enter ``import`` followed by the name of a package surrounded by quotes. This introduces the package name into llgoi's scope. The package may be a standard library package, or a source package on ``$GOPATH``. In the latter case, llgoi will first compile the package and its dependencies. Statements ========== Aside from declarations and expressions, the following kinds of statements can be evaluated by entering them at the llgoi prompt: IncDec statements, assignments, go statements, blocks, if statements, switch statements, select statements and for statements.