Size: a a a

2021 June 09

AK

Andrey Kartashov in Go-go!
можно ведь алиас сделать
источник

А

Алибек in Go-go!
Можно
источник

А

Алибек in Go-go!
Но напрямую именно так нельзя
источник

AB

Andrey Burov in Go-go!
ну это уже не совсем то
источник

А

Алибек in Go-go!
Если попытаться извне родного пакета объявить функцию с ресивером этого типа, компилятор выдаст тебе ошибку
источник

AK

Andrey Kartashov in Go-go!
почему?
источник

А

Алибек in Go-go!
У нас как раз на счет этого и был диалог с Андреем
источник

А

Алибек in Go-go!
Ну, потому что если у тебя есть какая то строка, ну к примеру
источник

AB

Andrey Burov in Go-go!
Ну сделав alias, считай что сделал новый тип
источник

А

Алибек in Go-go!
s := "123"
s.Foo
источник

А

Алибек in Go-go!
Так не работает, теье нужно сделать так
источник

А

Алибек in Go-go!
type Stringer struct{
   string
}...

...
s := "123"
st := Stringer{s}
st.Foo()
источник

AK

Andrey Kartashov in Go-go!
ну так это норм
источник

S

Sula in Go-go!
Мб type Some string
func (s *Some) Foo()... ?
источник

А

Алибек in Go-go!
Или тае
источник

А

Алибек in Go-go!
Насколько я помню можно и так, и так
источник

AB

Andrey Burov in Go-go!
type MyString string

func (ns MyString) Foo() {
}

s := MyString("Hello")
s.Foo()
источник

AK

Andrey Kartashov in Go-go!
если сильно гибко делать, тогда один и тот же код будет по разному работать в зависимости от импортов. Именно поэтому в го запрещено методы типа определять в другом пакете
источник

А

Алибек in Go-go!
Это мы с андреем тоже обсуждали)
источник

AK

Andrey Kartashov in Go-go!
если нужна такая динамика, то лучше взять питон :)
источник