Что означает аббревиатура nil
Что означает аббревиатура nil
Смотреть что такое «NIL» в других словарях:
Nil — Der Nil mit Nebenflüssen und AnrainerstaatenVorlage:Infobox Fluss/KARTE fehlt DatenVorlage … Deutsch Wikipedia
NIL — Le Nil (en arabe: El Bahr, le fleuve) prend rang, aux côtés de l’Amazone et de l’ensemble Mississippi Missouri, parmi les trois fleuves les plus longs du monde: son cours, étendu sur 6 671 km, draine un bassin de 2 870 000 km2. Ce n’est pourtant… … Encyclopédie Universelle
Nil FM — Studio album by Nil Karaibrahimgil Released January 2004 … Wikipedia
Nil-Li — Angaben Waffenart: Schlagwaffe, Wurfwaffe Verwendung … Deutsch Wikipedia
Nil [2] — Nil, mit 6397 km (vom Viktoriasee ab 5589 km) der zweitlängste Strom der Erde nächst Mississippi Missouri, der bedeutendste Strom Afrikas (s. Karte »Ägypten«) nach Länge und geschichtlicher Bedeutung, hat, an Wasserfülle dem Kongo und Niger… … Meyers Großes Konversations-Lexikon
nil — index blank (emptiness) Burton s Legal Thesaurus. William C. Burton. 2006 nil … Law dictionary
nil — [nɪl] noun [uncountable] nothing: • The new machine reduced labour costs to almost nil. * * * nil UK US /nɪl/ noun [U] ► nothing or zero: »At best, the economic impact is nil … Financial and business terms
Nil [3] — Nil (Nilus), berühmte antike Marmorgruppe, den Flußgott Nil darstellend, gefunden unter Leo X. bei der Kirche Santa Maria sopra Minerva in Rom, einer Gegend, wo einst ein Isisheiligtum war. Das Werk, jetzt im vatikanischen Museum befindlich, ist… … Meyers Großes Konversations-Lexikon
nil — S3 [nıl] n [U] [Date: 1800 1900; : Latin; Origin: nihil nothing ] 1.) nothing = ↑zero ▪ The new machine reduced labour costs to almost nil. 2.) BrE the number zero, used in sports results ▪ Our team won by two goal … Dictionary of contemporary English
nil — [ nıl ] noun uncount 1. ) used for saying that something does not exist: virtually/practically nil: Their chances of survival are virtually nil. 2. ) BRITISH SPOKEN the number 0 in the score of a game … Usage of the words and phrases in modern English
nil — /nil/, n. 1. nothing; naught; zero. adj. 2. having no value or existence: His credit rating is nil. [1805 15; Universalium
Nil не всегда nil
«Что? Что вообще здесь написано?» спросите вы. Сейчас все разложу.
Когда начинал изучать язык — не думал что зайду в этот узкий случай. Это также не рационально как и изменять итерируемую коллекцию.
На примере:
Что представляет собой интерфейс
Переходим в файл пакета go runtime/runtime2.go и видим:
Интерфейс хранит в себе тип интерфейса и тип самого значение.
Значение любого интерфейса, не только error, является nil в случае когда И значение И тип являются nil.
Функция Foo возвращает nil типа *os.PathError, результат мы сравниваем с nil типа nil, откуда и следует их неравенство.
Возможно об этом многие знали, но мало кто думает как попасть в это на практике.
Мой пример
Response всегда имеет результат или ошибку.
При наличии ошибки — отправляем ее куда необходимо через сервис нотификаций.
Внутри сервиса вызывается метод Error, а так как наше значение nil — получаем панику.
Что делать?
Возвращать интерфейс строго типа интерфейса.
В случае ошибки — типа ошибки.
Этот прием тоже, к моему удивлению, не работает.
Получается так, что при присвоении значение в переменную err мы также передаем ей исходную информацию о типе, который не есть nil.
Да, такой прием работает.
Но будем честны, мы не можем позволить себе проверить все типы ошибок которые мы будем передавать.
Это могут быть все ошибки из драйвера базы данных, все наши внутренние ошибки и прочий мусор.
Какой наиболее рациональный вариант я вижу:
Вначале у нас объявленa переменная типа error, как оказывается со значением и типом nil.
И прежде чем передать наш тип и значение этой переменной — проверим наш тип и его значение на nil.
Это позволит нам не упасть с паникой.
Напоследок
Можно пойти еще дальше и реализовать «опциональную» ошибку у типа Response, OptionalError или ErrorOrNil, вроде такого:
На заметку
В заметках Go wiki код ревью заметка в топике об интерфейса: Instead return a concrete type and let the consumer mock the producer implementation.
Отмечу, что приведенные мной выше пляски не про это.
Мои заметки позволяют не упасть с паникой когда вы знаете, что хотите вернуть интерефйс, а в случае ошибок — вы всегда хотите возвращать интерфейс.
Но если вы можете себе позволить вернуть определенный тип — возвращайте его.