Skip to content

ahmedakef/goshell

Repository files navigation

Goshell

Goshell is REPL shell for golang.

the project is inspired by rango but took different decisions.

Table of Contents

Installation

go install github.com/ahmedakef/goshell@latest

Features

  • auto import the needed libraries using goimports just write fmt.Print() and fmt will be imported.
  • autocompletion for languages keywords and libraries's functions and types without the need for language server.
  • print the variablles by writing them, no need to use fmt.Print()
  • supports all shell line editing commands supported by liner
  • don't have dependancy on goimports

Examples

live demo

Example Demo

Simple variable printing

code you write generated code
>>> a:=1
>>> b:=2
>>> a
1
package main

import "fmt"

func main() {
	a := 1
	b := 2
	fmt.Println(a)
	use(a, b)
}

// used to avoid "declared and not used" error
func use(vals ...any) {
	for _, val := range vals {
		_ = val
	}
}
3 lines17 lines

Calling functions

code you write generated code
>>> func add(x,y int) int {
...     return x+y
... }
>>> a:=1
>>> b:=2
>>> add(a,b)
3
package main

import "fmt"

func add(x, y int) int {
	return x + y
}

func main() {
	a := 1
	b := 2
	fmt.Println(add(a, b))
	use(a, b)
}

// used to avoid "declared and not used" error
func use(vals ...any) {
	for _, val := range vals {
		_ = val
	}
}
6 lines21 lines

Contact

ahmedakef - aemed.akef.1@gmail.com

About

a REPL shell for golang

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages