-- Lock-hover --
Lock locks m\.

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

```go
func (*sync.Mutex).Lock()
```
-- Name-hover --
Name returns the object\'s \(package\-local, unqualified\) name\.

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

```go
func (*types.object).Name() string
```
-- 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 --
[`a.Random` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a#Random)

```go
func Random() int
```
-- 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 --
[`a.Random2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a#Random2)

```go
func Random2(y int) int
```
-- 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 --
\@err

```go
var err error
```
-- g-hover --
When I hover on g, I should see this comment\.

```go
const g untyped int = 1
```
-- h-hover --
Constant block\.

```go
const h untyped int = 2
```
-- make-hover --
The make built\-in function allocates and initializes an object of type slice, map, or chan \(only\)\.

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

```go
func(t Type, size ...IntegerType) Type
```
-- string-hover --
```go
string
```
-- typesImport-hover --
[`types` on pkg.go.dev](https://pkg.go.dev/go/types)

```go
package types ("go/types")
```
-- x-hover --
x is a variable\.

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

```go
var z string
```
