GO_INTERVIEW_LIB Telegram 900
❗️ Пример для предыдущего вопроса

У нас есть структура ServerConfig. Она хранит все настройки сервера: хост, порт, флаг использования TLS и таймаут.

В функции NewServer мы принимаем срез функций типа Option, который позволяет нам гибко настраивать сервер.

Каждая опция — это просто функция. Причём она не меняет сервер напрямую, а принимает на вход его конфигурацию и меняет только нужное поле.

import "fmt"

// Конфигурация структуры
type ServerConfig struct {
Host string
Port int
UseTLS bool
Timeout int
}

// Тип функции, которая изменяет настройки конфигурации
type Option func(*ServerConfig)

// Новый сервер с конфигурацией по умолчанию
func NewServer(options ...Option) *ServerConfig {
// Настройки по умолчанию
config := &ServerConfig{
Host: "localhost",
Port: 8080,
UseTLS: false,
Timeout: 30,
}

// Применение всех переданных опций
for _, option := range options {
option(config)
}

return config
}

// Опция для изменения хоста
func WithHost(host string) Option {
return func(c *ServerConfig) {
c.Host = host
}
}

// Опция для изменения порта
func WithPort(port int) Option {
return func(c *ServerConfig) {
c.Port = port
}
}

// Опция для включения TLS
func WithTLS(enable bool) Option {
return func(c *ServerConfig) {
c.UseTLS = enable
}
}

// Опция для изменения таймаута
func WithTimeout(timeout int) Option {
return func(c *ServerConfig) {
c.Timeout = timeout
}
}

func main() {
// Создаем сервер с настройками по умолчанию
server := NewServer()

// Печатаем настройки сервера
fmt.Printf("Default server config: %+v\n", server)

// Создаем сервер с измененными настройками
customServer := NewServer(
WithHost("example.com"),
WithPort(9090),
WithTLS(true),
WithTimeout(60),
)

// Печатаем новые настройки сервера
fmt.Printf("Custom server config: %+v\n", customServer)
}
Please open Telegram to view this post
VIEW IN TELEGRAM



tgoop.com/go_interview_lib/900
Create:
Last Update:

❗️ Пример для предыдущего вопроса

У нас есть структура ServerConfig. Она хранит все настройки сервера: хост, порт, флаг использования TLS и таймаут.

В функции NewServer мы принимаем срез функций типа Option, который позволяет нам гибко настраивать сервер.

Каждая опция — это просто функция. Причём она не меняет сервер напрямую, а принимает на вход его конфигурацию и меняет только нужное поле.

import "fmt"

// Конфигурация структуры
type ServerConfig struct {
Host string
Port int
UseTLS bool
Timeout int
}

// Тип функции, которая изменяет настройки конфигурации
type Option func(*ServerConfig)

// Новый сервер с конфигурацией по умолчанию
func NewServer(options ...Option) *ServerConfig {
// Настройки по умолчанию
config := &ServerConfig{
Host: "localhost",
Port: 8080,
UseTLS: false,
Timeout: 30,
}

// Применение всех переданных опций
for _, option := range options {
option(config)
}

return config
}

// Опция для изменения хоста
func WithHost(host string) Option {
return func(c *ServerConfig) {
c.Host = host
}
}

// Опция для изменения порта
func WithPort(port int) Option {
return func(c *ServerConfig) {
c.Port = port
}
}

// Опция для включения TLS
func WithTLS(enable bool) Option {
return func(c *ServerConfig) {
c.UseTLS = enable
}
}

// Опция для изменения таймаута
func WithTimeout(timeout int) Option {
return func(c *ServerConfig) {
c.Timeout = timeout
}
}

func main() {
// Создаем сервер с настройками по умолчанию
server := NewServer()

// Печатаем настройки сервера
fmt.Printf("Default server config: %+v\n", server)

// Создаем сервер с измененными настройками
customServer := NewServer(
WithHost("example.com"),
WithPort(9090),
WithTLS(true),
WithTimeout(60),
)

// Печатаем новые настройки сервера
fmt.Printf("Custom server config: %+v\n", customServer)
}

BY Библиотека Go для собеса | вопросы с собеседований


Share with your friend now:
tgoop.com/go_interview_lib/900

View MORE
Open in Telegram


Telegram News

Date: |

It’s yet another bloodbath on Satoshi Street. As of press time, Bitcoin (BTC) and the broader cryptocurrency market have corrected another 10 percent amid a massive sell-off. Ethereum (EHT) is down a staggering 15 percent moving close to $1,000, down more than 42 percent on the weekly chart. The group also hosted discussions on committing arson, Judge Hui said, including setting roadblocks on fire, hurling petrol bombs at police stations and teaching people to make such weapons. The conversation linked to arson went on for two to three months, Hui said. Activate up to 20 bots Telegram Android app: Open the chats list, click the menu icon and select “New Channel.” In 2018, Telegram’s audience reached 200 million people, with 500,000 new users joining the messenger every day. It was launched for iOS on 14 August 2013 and Android on 20 October 2013.
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American