用Go语言返回其结构地址的方法

In my attempt to create a linked list data structure I've declared two structs.

package main

import "fmt"

type listElement struct {
    data int         
    next *listElement 
}

type List struct {
    first *listElement 
    last  *listElement 
    len   int          
}

I want to create a method that returns an empty list. So far I've only been able to create the function

func new() *List {
    return &List{}
}

This is the same result I've seen in multiple data structure repositories. Is it possible to create a method List.new() that returns a new empty list?

Yes, of course you can define a method that returns a List value, but since you need a List value to call a method this is kind of awkward:

package main

type List struct{}

func (List) New1() *List {
    return &List{}
}

func (*List) New2() *List {
    return &List{}
}

func main() {
    _ = List{}.New1()
    _ = (&List{}).New2()
    _ = (*List)(nil).New2()
}

I honestly don't see how this is better than a NewList function, which is idiomatic in Go:

func NewList() *List {
    return &List{}
}

If your package is called list, name the function New instead, so it is called as list.New().

The arguments and bodies would be the same in all cases. They only differ in how they are called, and the package function is easiest to use. (See the link in JimB's comment for one more variant that is slightly different.)

It seems you have not yet read Effective Go, which suggests most of the above.

The function to make new instances of ring.Ring—which is the definition of a constructor in Go—would normally be called NewRing, but since Ring is the only type exported by the package, and since the package is called ring, it's called just New, which clients of the package see as ring.New.