-- Lock-hover --
```go
func (*sync.Mutex).Lock()
```

[`(sync.Mutex).Lock` on pkg.go.dev](https://pkg.go.dev/sync#Mutex.Lock)

Lock locks m\.
-- Name-hover --
```go
func (*types.object).Name() string
```

[`(types.TypeName).Name` on pkg.go.dev](https://pkg.go.dev/go/types#TypeName.Name)

Name returns the object\'s \(package\-local, unqualified\) name\.
-- Random-definition --
godef/a/random.go:3:6-12: defined here as ```go
func Random() int
```

[`a.Random` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a#Random)
-- Random-definition-json --
{
	"span": {
		"uri": "file://godef/a/random.go",
		"start": {
			"line": 3,
			"column": 6,
			"offset": 16
		},
		"end": {
			"line": 3,
			"column": 12,
			"offset": 22
		}
	},
	"description": "```go\nfunc Random() int\n```\n\n[`a.Random` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a#Random)"
}

-- Random-hover --
```go
func Random() int
```

[`a.Random` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a#Random)
-- Random2-definition --
godef/a/random.go:8:6-13: defined here as ```go
func Random2(y int) int
```

[`a.Random2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a#Random2)
-- Random2-definition-json --
{
	"span": {
		"uri": "file://godef/a/random.go",
		"start": {
			"line": 8,
			"column": 6,
			"offset": 71
		},
		"end": {
			"line": 8,
			"column": 13,
			"offset": 78
		}
	},
	"description": "```go\nfunc Random2(y int) int\n```\n\n[`a.Random2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a#Random2)"
}

-- Random2-hover --
```go
func Random2(y int) int
```

[`a.Random2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a#Random2)
-- a-hover --
```go

```
-- aPackage-hover --
Package a is a package for testing go to definition\.
-- err-definition --
godef/a/a.go:33:6-9: defined here as ```go
var err error
```

\@err
-- err-definition-json --
{
	"span": {
		"uri": "file://godef/a/a.go",
		"start": {
			"line": 33,
			"column": 6,
			"offset": 597
		},
		"end": {
			"line": 33,
			"column": 9,
			"offset": 600
		}
	},
	"description": "```go\nvar err error\n```\n\n\\@err"
}

-- err-hover --
```go
var err error
```

\@err
-- g-hover --
```go
const g untyped int = 1
```

When I hover on g, I should see this comment\.
-- h-hover --
```go
const h untyped int = 2
```

Constant block\.
-- make-hover --
```go
func(t Type, size ...IntegerType) Type
```

[`make` on pkg.go.dev](https://pkg.go.dev/builtin#make)

The make built\-in function allocates and initializes an object of type slice, map, or chan \(only\)\.
-- string-hover --
```go
string
```
-- typesImport-hover --
```go
package types ("go/types")
```

[`types` on pkg.go.dev](https://pkg.go.dev/go/types)
-- x-hover --
```go
var x string
```

x is a variable\.
-- z-hover --
```go
var z string
```

z is a variable too\.
