Вернуть все содержимое в объекте - PullRequest
0 голосов
/ 03 мая 2018

Я очень новичок в Go, поэтому прошу прощения за этот вопрос нуба.

В JavaScript console.log(window) возвращает все объекты внутри window. В PHP var_dump(new DateTime()) возвращает все объекты внутри DateTime().

Есть ли в Go функция, которая будет возвращать все объекты из данного объекта? Например, Println должно быть возвращено, если задано fmt.

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

В Go возможно что-то похожее, но не для всех.

func main() {

    //arrays
    a := []int{1,2,3,4}
    fmt.Printf("%v\r\n", a)         //print [1 2 3 4]

    //maps
    b := map[string]int{
          "a":1,
          "b":2,
    }
    fmt.Printf("%v\r\n", b)        //print map[a:1 b:2]

    //structs
    c := struct{
          A int
          B int
    }{1,2}
    d := struct{
          C struct{
              A int 
              B int
          }
          D int
    }{c,2}
    fmt.Printf("%v\r\n", d)        //print {{1 2} 2}
}

См .: https://play.golang.org/p/vzlCsOG497h

Если вы передаете fmt , возникает ошибка, потому что это пакет. Ошибка:

Error: use of package fmt without selector

Надеюсь, это поможет (тоже)!

0 голосов
/ 03 мая 2018

Попробуйте выполнить go doc fmt в терминале, чтобы получить описание пакета "fmt" и список функций, которые он экспортирует, или обратитесь к документации fmt пакета в https://golang.org. В go, как и в большинстве других статических / скомпилированных языков, пользователи должны ссылаться на документацию (или docs ), которая описывает язык программирования и его библиотеки. Сравните это с некоторыми динамическими языками / языками сценариев , которые часто облегчают запрос любого объекта, чтобы обнаружить его полезные свойства.

Во время выполнения вы можете получить полезную распечатку любого произвольного значения , используя форматирующий глагол %#v для создания синтаксического представления значения go, например,

xs := []int{1, 2, 3}
fmt.Printf("OK: xs=%#v\n", xs)
// OK: xs=[]int{1, 2, 3}    

Обратите внимание, что пакет "fmt" не является значением на языке go, поэтому он не может быть напечатан во время выполнения как таковой.

0 голосов
/ 03 мая 2018

GO ООП , & наследование

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

Что конкретно вы пытаетесь сделать? Если вы ищете var_dump:

ИСПОЛЬЗОВАНИЕ fmt.Println

someErr := fmt.Errorf("custom type error")
fmt.Println(someErr)

Println форматирует, используя форматы по умолчанию для своих операндов, и записывает в стандартный вывод.

ИСПОЛЬЗОВАНИЕ fmt.Printf

someErr := fmt.Errorf("custom type error")
fmt.Printf("This is an error:%v A num: %v A str", someErr, 19, "Stackoverflow")

Printf форматирует в соответствии со спецификатором формата и записывает в стандартный вывод.

ИСПОЛЬЗОВАНИЕ fmt.Sprintf

someErr := fmt.Errorf("custom type error")
// someStr now contains the string formatted as shown below
someStr := fmt.Sprintf("This is an error:%v A num: %v A str", someErr, 19, "Stackoverflow")

Sprintf форматирует в соответствии со спецификатором формата и возвращает полученную строку.

Вот пример моих личных предпочтений при выводе данных var: https://play.golang.org/p/8dpeE-fray_J

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...