Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–5 unchanged (5 lines)
6
7 "github.com/gin-gonic/gin"
8)
9
10func main() {
11 router := gin.Default()
12 router.Static("/", "./public")
13 router.POST("/upload", func(c *gin.Context) {
14 name := c.PostForm("name")
15 email := c.PostForm("email")
16
17 // Source
18 file, err := c.FormFile("file")
…lines 19–33 unchanged (15 lines)

After

…lines 1–5 unchanged (5 lines)
6
7 "github.com/gin-gonic/gin"
8)
9
10func main() {
11 router := gin.Default()
12 // Set a lower memory limit for multipart forms (default is 32 MiB)
13 router.MaxMultipartMemory = 8 << 20 // 8 MiB
14 router.Static("/", "./public")
15 router.POST("/upload", func(c *gin.Context) {
16 name := c.PostForm("name")
17 email := c.PostForm("email")
18
19 // Source
…lines 20–35 unchanged (16 lines)

Before

source_file
package_clause
package "package"
package_identifier "main"
import_declaration
import "import"
import_spec_list
( "("
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "fmt"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "net/http"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/gin-gonic/gin"
" "\""
) ")"
function_declaration
func "func"
identifier "main"
parameter_list
( "("
) ")"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "router"
:= ":="
expression_list
call_expression
selector_expression
identifier "gin"
. "."
field_identifier "Default"
argument_list
( "("
) ")"
expression_statement
call_expression
selector_expression
identifier "router"
. "."
field_identifier "Static"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "/"
" "\""
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "./public"
" "\""
) ")"
expression_statement (+234 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "router"
. "."
field_identifier "Run"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content ":8080"
" "\""
) ")"
} "}"

After

source_file
package_clause
package "package"
package_identifier "main"
import_declaration
import "import"
import_spec_list
( "("
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "fmt"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "net/http"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/gin-gonic/gin"
" "\""
) ")"
function_declaration
func "func"
identifier "main"
parameter_list
( "("
) ")"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "router"
:= ":="
expression_list
call_expression
selector_expression
identifier "gin"
. "."
field_identifier "Default"
argument_list
( "("
) ")"
comment "// Set a lower memory limit for multipart forms (default is "...
assignment_statement
expression_list
selector_expression
identifier "router"
. "."
field_identifier "MaxMultipartMemory"
= "="
expression_list
binary_expression
int_literal "8"
<< "<<"
int_literal "20"
comment "// 8 MiB"
expression_statement
call_expression
selector_expression
identifier "router"
. "."
field_identifier "Static"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content "/"
" "\""
, ","
interpreted_string_literal
" "\""
interpreted_string_literal_content "./public"
" "\""
) ")"
expression_statement (+234 nodes collapsed)
expression_statement
call_expression
selector_expression
identifier "router"
. "."
field_identifier "Run"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content ":8080"
" "\""
) ")"
} "}"