{"action":"created","issue":{"url":"https://api.github.com/repos/crystal-lang/crystal/issues/3489","repository_url":"https://api.github.com/repos/crystal-lang/crystal","labels_url":"https://api.github.com/repos/crystal-lang/crystal/issues/3489/labels{/name}","comments_url":"https://api.github.com/repos/crystal-lang/crystal/issues/3489/comments","events_url":"https://api.github.com/repos/crystal-lang/crystal/issues/3489/events","html_url":"https://github.com/crystal-lang/crystal/issues/3489","id":186159276,"number":3489,"title":"Go Language like interfaces?","user":{"login":"bjorndm","id":6168803,"avatar_url":"https://avatars.githubusercontent.com/u/6168803?v=3","gravatar_id":"","url":"https://api.github.com/users/bjorndm","html_url":"https://github.com/bjorndm","followers_url":"https://api.github.com/users/bjorndm/followers","following_url":"https://api.github.com/users/bjorndm/following{/other_user}","gists_url":"https://api.github.com/users/bjorndm/gists{/gist_id}","starred_url":"https://api.github.com/users/bjorndm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bjorndm/subscriptions","organizations_url":"https://api.github.com/users/bjorndm/orgs","repos_url":"https://api.github.com/users/bjorndm/repos","events_url":"https://api.github.com/users/bjorndm/events{/privacy}","received_events_url":"https://api.github.com/users/bjorndm/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":16,"created_at":"2016-10-30T20:04:07Z","updated_at":"2016-12-13T18:58:15Z","closed_at":"2016-12-13T18:58:15Z","body":"I'm currently in the process of trying to transforming an existing Ruby program into Crystal. It's going rather slowly, at one hand because Crystal does make me realize that I have some latent bugs in there, for example, values that could be nil where I thought they couldn't, but on the other hand because I have to add type annotations, more than I had expected to. \n\nOne thing that irked me that I was forced to use abstract classes to specify a certain \"interface\", because I didn't want to have to use \"responds_to?\" with many methods. This made me think that Crystal currently seems to miss something important, and that is Go language style interfaces. Now, with abstract classes I have to disturb or introduce inheritance where I don't like it and I have to be explicit about it. With Go language style interfaces this wouldn't be necessary.\n\nSo I am wondering if something like Go language style interfaces is planned for Crystal or not and if the implementors of Crystal think such language feature would be desirable.\n"},"comment":{"url":"https://api.github.com/repos/crystal-lang/crystal/issues/comments/266828603","html_url":"https://github.com/crystal-lang/crystal/issues/3489#issuecomment-266828603","issue_url":"https://api.github.com/repos/crystal-lang/crystal/issues/3489","id":266828603,"user":{"login":"asterite","id":209371,"avatar_url":"https://avatars.githubusercontent.com/u/209371?v=3","gravatar_id":"","url":"https://api.github.com/users/asterite","html_url":"https://github.com/asterite","followers_url":"https://api.github.com/users/asterite/followers","following_url":"https://api.github.com/users/asterite/following{/other_user}","gists_url":"https://api.github.com/users/asterite/gists{/gist_id}","starred_url":"https://api.github.com/users/asterite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/asterite/subscriptions","organizations_url":"https://api.github.com/users/asterite/orgs","repos_url":"https://api.github.com/users/asterite/repos","events_url":"https://api.github.com/users/asterite/events{/privacy}","received_events_url":"https://api.github.com/users/asterite/received_events","type":"User","site_admin":false},"created_at":"2016-12-13T18:58:15Z","updated_at":"2016-12-13T18:58:15Z","body":"I'm closing this, because the above works well."}}
{"actor":{"display_login":"asterite"}}