golang

Описание: Разработка и отладка приложений. Упор на 3D-графику.

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#13 dyvniy » Ср, 22 ноября 2017, 13:19:10

Автоматическая подстановка аргументов в шаблонные условия.
https://github.com/Knetic/govaluate
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#14 dyvniy » Чт, 23 ноября 2017, 15:42:36

list of struct param names
https://stackoverflow.com/questions/40864840/how- ... ld-names-of-a-struct-in-golang

Код: Выделить всё

func (b examplePrintFields() {
    
val := reflect.ValueOf(b)
    for 
:= 0val.Type().NumField(); i++ {
        
fmt.Println(val.Type().Field(i).Name)
    }

And json names

Код: Выделить всё

func (b examplePrintFields() {
    
val := reflect.ValueOf(b)
    for 
:= 0val.Type().NumField(); i++ {
        
fmt.Println(val.Type().Field(i).Tag.Get("json"))
    }

Struct for examples

Код: Выделить всё

type example struct {
    
Id          int `json:"id"`
    
CreatedAt   string `json:"created_at"`
    
Tag         string `json:"tag"`
    
Text        string `json:"text"`
    
AuthorId    int `json:"author_id"`
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#15 dyvniy » Пт, 1 декабря 2017, 15:39:50

goroutine
https://tour.golang.org/concurrency/1
Та самая горутина, за которую все любят Golang

Код: Выделить всё

package main

import 
(
    
"fmt"
    "time"
)

func say(s string) {
    for 
:= 05i++ {
        
time.Sleep(100 time.Millisecond)
        
fmt.Println(s)
    }
}

func main() {
    
go say("world")
    
say("hello")
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#16 dyvniy » Чт, 7 декабря 2017, 14:58:10

Про объектную ориентированность
http://golangtutorials.blogspot.ru/2011/06/structs-in-go-instead-of-classes-in.html

Код: Выделить всё

class House {
    public 
String getHouseName() {  //method defined within class
        //implementation
    
}
}

// Partial code: In Go
type House struct { }

func (h HouseGetHouseName() string { } //method defined outside of struct 
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#17 dyvniy » Чт, 7 декабря 2017, 15:00:57

полиморфизм
https://toster.ru/q/286213

Код: Выделить всё

package main


import 
"fmt"

type AnimalIntf interface {
  Walk() AnimalIntf
  Say
() AnimalIntf
}

type Animal struct {
  animal    AnimalIntf
  Name string
}

type Rabbit struct {
  Animal
}


// Animal
func NewAnimal(name string) *Animal {
  animal := new(Animal)
  animal.animal = animal
  animal
.Name = name
  return animal
}

//Метод Walk у каждого свой
func (this *Animal) Walk() AnimalIntf {
  fmt.Println("I walk", this.Name)
  return this.animal
}

//Метод Say общий
func (this *Animal) Say() AnimalIntf {
  fmt.Println("Im Animal and my Name is", this.Name)
  return this.animal
}


// Rabbit
func NewRabbit(name string) *Rabbit {
  rabbit := new(Rabbit)
  rabbit.animal = rabbit
  rabbit
.Name = name
  return rabbit
}

//Метод Walk изменяется для Rabbit и работает корректно
func (this *Rabbit) Walk() AnimalIntf {
  this.Animal.Walk()
  fmt.Println("...and Jump")
  return this.animal
}


func main() {

  animal := NewAnimal("Зверь")
  animal.Walk().Say().Walk()

  fmt.Println("\n---------------------\n")

  rabbit := NewRabbit("Кроль")
  rabbit.Walk().Say().Walk()


примерно так, как вариант
вывод:
I walk Зверь
Im Animal and my Name is Зверь
I walk Зверь

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

I walk Кроль
...and Jump
Im Animal and my Name is Кроль
I walk Кроль
...and Jump
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 6 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#18 dyvniy » Чт, 4 января 2018, 10:13:52

Изображение


Название раздела: Программирование (под Desktop и Android)
Описание: Разработка и отладка приложений. Упор на 3D-графику.

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения
:) ;) :hihi: :P :hah: :haha: :angel: :( :st: :_( :cool: 8-| :beee: :ham: :rrr: :grr: :* :secret: :stupid: :music: Ещё смайлики…
   

Вернуться в «Программирование (под Desktop и Android)»

Кто сейчас на форуме (по активности за 15 минут)

Сейчас этот раздел просматривают: 6 гостей