Telegram Group & Telegram Channel
Note #59: Релиз кандидат (RC1) для Go 1.14

Из наиболее значимого в go 1.14 внесли изменения в спецификацию языка, а именно, теперь разрешается встраивать интерфейсы с пересекающимися наборами методов.

Возвращаясь к реальной жизни давайте разберем пример типичного интерфейса:
package user

type Database interface {
GetUser(userID uint64) (model.User, error)
}

И допустим у меня есть несколько других пакетов, из которые я тоже хочу доставать информацию о пользователе, поэтому нам необходимо встроить интерфейс user.Database в hardware.Database и тоже самое для wallet.Database:
package hardware

type Database interface {
user.Database
SaveDevice(usertID uint64, device model.Device) error
}

package wallet

type Database interface {
user.Database
ReadWallet(userID uint64) (model.Wallet, error)
}

Ну и классика жанра, прилетает задача где нужно создать интерфейс shopping.Database который должен в себе содержать методы hardware.Database и wallet.Database:
package shopping

type Database interface {
wallet.Database
hardware.Database
Buy(userID uint64, deviceID uint64) error
}
И в go версии меньше чем go 1.14 мы получим ошибку:
Duplicate method GetUser(userID uint64) (model.User, error)
Если запустить go1.14rc1 run main.go то все будет ок 🎉

P.S. эта проблема была еще озвучена Алоном Донованом в 2013 году!!! [1]

Links:
[1] spec: allow embedding overlapping interfaces https://github.com/golang/go/issues/6977
[2] Proposal https://github.com/golang/proposal/blob/master/design/6977-overlapping-interfaces.md



tg-me.com/golang_for_two/85
Create:
Last Update:

Note #59: Релиз кандидат (RC1) для Go 1.14

Из наиболее значимого в go 1.14 внесли изменения в спецификацию языка, а именно, теперь разрешается встраивать интерфейсы с пересекающимися наборами методов.

Возвращаясь к реальной жизни давайте разберем пример типичного интерфейса:

package user

type Database interface {
GetUser(userID uint64) (model.User, error)
}

И допустим у меня есть несколько других пакетов, из которые я тоже хочу доставать информацию о пользователе, поэтому нам необходимо встроить интерфейс user.Database в hardware.Database и тоже самое для wallet.Database:
package hardware

type Database interface {
user.Database
SaveDevice(usertID uint64, device model.Device) error
}

package wallet

type Database interface {
user.Database
ReadWallet(userID uint64) (model.Wallet, error)
}

Ну и классика жанра, прилетает задача где нужно создать интерфейс shopping.Database который должен в себе содержать методы hardware.Database и wallet.Database:
package shopping

type Database interface {
wallet.Database
hardware.Database
Buy(userID uint64, deviceID uint64) error
}
И в go версии меньше чем go 1.14 мы получим ошибку:
Duplicate method GetUser(userID uint64) (model.User, error)
Если запустить go1.14rc1 run main.go то все будет ок 🎉

P.S. эта проблема была еще озвучена Алоном Донованом в 2013 году!!! [1]

Links:
[1] spec: allow embedding overlapping interfaces https://github.com/golang/go/issues/6977
[2] Proposal https://github.com/golang/proposal/blob/master/design/6977-overlapping-interfaces.md

BY 🇺🇦 Go for two :)


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/golang_for_two/85

View MORE
Open in Telegram


🇺🇦 Go на двоих Telegram | DID YOU KNOW?

Date: |

Traders also expressed uncertainty about the situation with China Evergrande, as the indebted property company has not provided clarification about a key interest payment.In economic news, the Commerce Department reported an unexpected increase in U.S. new home sales in August.Crude oil prices climbed Friday and front-month WTI oil futures contracts saw gains for a fifth straight week amid tighter supplies. West Texas Intermediate Crude oil futures for November rose $0.68 or 0.9 percent at 73.98 a barrel. WTI Crude futures gained 2.8 percent for the week.

Mr. Durov launched Telegram in late 2013 with his brother, Nikolai, just months before he was pushed out of VK, the Russian social-media platform he founded. Mr. Durov pitched his new app—funded with the proceeds from the VK sale—less as a business than as a way for people to send messages while avoiding government surveillance and censorship.

🇺🇦 Go на двоих from us


Telegram 🇺🇦 Go for two :)
FROM USA