• Почему телефон на aliexpress стоит дешевле?

    opium
    @opium
    Просто люблю качественно работать
    последние лет семь покупаю телефоны только на али, нет смысла переплачивать + высокая доступность и скорость доставки
    Ответ написан
    1 комментарий
  • Как создать асинхронность?

    Просто сделать пункт 1 и 2 в разных горутинах. Асинхронность в го и так есть по-умолчанию, при этом можно просто писать последовательный код и не беспокоиться о ней.
    Ответ написан
    Комментировать
  • Как создать асинхронность?

    @abbaboka
    Обработчики http-запросов в Go автоматически асинхронны.
    Не забыть об этом и все функции должны быть реализованы как реентерабельные.
    Ну и блокировки общих и внешних ресурсов не забыть или предусмотреть в ней асинхронность.
    Ответ написан
    Комментировать
  • Почему ничего не выводит?

    @ghostiam
    На Go писатель, серверов пинатель.
    Строка: json.Unmarshal(byteString,&simpleResp)
    возвращает ошибку:
    json: cannot unmarshal array into Go struct field Response.Data of type main.sampleArray
    Ответ написан
    5 комментариев
  • Почему ничего не выводит?

    У вас структуры совсем не соответствуют тому, что приходит в JSON.
    sampleArray — это массив, а не структура.
    Теги для version и data не прописаны, поэтому го их ищет в JSON с большой буквы.
    Вообще, конкретный формат не очень будет удобно парсить в языке со статической типизацией, ибо элементы массива sampleArray имеют разный тип.

    Можно сделать так
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    	"io/ioutil"
    	"net/http"
    )
    
    type Response struct {
    	Version string                   `json:"version"`
    	Data    map[string][]interface{} `json:"data"`
    }
    
    func main() {
    	var client http.Client
    	resp, err := client.Get("https://api.myjson.com/bins/by9gw")
    	if err != nil {
    		panic(err)
    	}
    	defer resp.Body.Close()
    	simpleResp := Response{}
    	fmt.Println("Response code:", resp.StatusCode)
    	if resp.StatusCode == http.StatusOK {
    		bodyBytes, err := ioutil.ReadAll(resp.Body)
    		if err != nil {
    			panic(err)
    		}
    		_ = json.Unmarshal(bodyBytes, &simpleResp)
    		sampleArr := simpleResp.Data["sampleArray"]
    		fmt.Println(sampleArr[0])
    		fmt.Println(sampleArr[1])
    
    		casted, ok := sampleArr[2].(map[string]interface{})
    		if !ok {
    			panic("Wrong type of sampleArr element")
    		}
    		fmt.Println("Name:")
    		fmt.Println(casted["name"])
    	}
    }

    Ответ написан
    Комментировать