The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Релиз языка программирования Go 1.10"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Релиз языка программирования Go 1.10" +/
Сообщение от Аноним (-), 19-Фев-18, 18:19 
>  go не тклассов

Ну нормас так. Что, ФП головного мозга? Обратно в 70-ые?

> А так — принимает interface{}.

Потыкал запускалку примеров по твоей ссылке и сразу обнаружил, что вам приходится явно возводить .(string), чтобы привести значение элемента списка к строке. Я ж грю - ничем не отличается от void* в глибе.

--------------------

    package main
    
    import (
      "container/list"
      "fmt"
    )
    import "strings"
    
    func main() {
      // Create a new list and put some numbers in it.
      l := list.New()
      e4 := l.PushBack("Four")
      e1 := l.PushFront("One")
      l.InsertBefore("Foo", e4)
      l.InsertAfter("Bar", e1)
      l.InsertAfter("Baz", e1)
    
      // Iterate through list and print its contents.
      for e := l.Front(); e != nil; e = e.Next() {
    
        // Хаха :-)
        //
        // fmt.Println(strings.ToUpper(e.Value))
        //
        // prog.go:20:32: cannot use e.Value (type interface {}) as type string in argument to strings.ToUpper: need type assertion
    
        // А вот с явным приведением типа работает. Го-программерам без дженериков приходится явно указывать типы там, где в норм языках они указываются на основе дженериков
        fmt.Println(strings.ToUpper(e.Value.(string)))
      }
    }

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Релиз языка программирования Go 1.10, opennews, 18-Фев-18, 11:03  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру