Страница 3 из 4

Добавлено: Ср, 22 ноября 2017, 13:19:10
dyvniy
Автоматическая подстановка аргументов в шаблонные условия.
https://github.com/Knetic/govaluate

Добавлено: Чт, 23 ноября 2017, 15:42:36
dyvniy
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"`

Добавлено: Пт, 1 декабря 2017, 15:39:50
dyvniy
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")

Добавлено: Чт, 7 декабря 2017, 14:58:10
dyvniy
Про объектную ориентированность
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 

Добавлено: Чт, 7 декабря 2017, 15:00:57
dyvniy
полиморфизм
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

Добавлено: Чт, 4 января 2018, 10:13:52
dyvniy