Golang,从struct调用方法

Is it possible to call method from struct without variable with this struct type?

//models.go
type MyStruct struct {
  id int
  name string
}

func (s MyStruct) GetSomeAdditionalData() string {
  return "additional data string"
}

//app.go
func main() {
  fmt.Println(models.MyStruct.GetSomeAdditionalData()) // not works

  var variable models.MyStruct
  fmt.Println(variable.GetSomeAdditionalData()) // it worked
}

Or maybe Go have other method to add some data for struct?

Or maybe I select wrong way to do it? :)

You can use a struct literal or a nil pointer.

MyStruct{}.GetSomeAdditionalData()
(*MyStruct)(nil).GetSomeAdditionalData()

You can define a package function (without any receiver).
It differs from a method, as a method needs a receiver.

func GetSomeAdditionalData() string {
  return "additional data string"
}

Which you can call directly, without any instance of the struct MyStruct needed (since you don't need any of MyStruct data anyway):

func main() {
  fmt.Println(models.GetSomeAdditionalData())
  fmt.Println(GetSomeAdditionalData())

(the second form works if you are in the package models already)

To say you can. MyStruct.GetSomeAdditionalData() is called method expression and you must provide first argument of type MyStruct to that call. Argument can be anonymous composite literal MyStruct.GetSomeAdditionalData(MyStruct{}). Here is working example https://play.golang.org/p/Wc_DjqnpLC . But all that looks not very sensible.