Автоматическая подстановка аргументов в шаблонные условия.
https://github.com/Knetic/govaluate
Код: Выделить всё
func (b example) PrintFields() {
val := reflect.ValueOf(b)
for i := 0; i < val.Type().NumField(); i++ {
fmt.Println(val.Type().Field(i).Name)
}
}
Код: Выделить всё
func (b example) PrintFields() {
val := reflect.ValueOf(b)
for i := 0; i < val.Type().NumField(); i++ {
fmt.Println(val.Type().Field(i).Tag.Get("json"))
}
}
Код: Выделить всё
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"`
}
Код: Выделить всё
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
Код: Выделить всё
class House {
public String getHouseName() { //method defined within class
//implementation
}
}
// Partial code: In Go
type House struct { }
func (h House) GetHouseName() string { } //method defined outside of struct
Код: Выделить всё
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
Вернуться в «Программирование (под Desktop и Android)»
Сейчас этот раздел просматривают: 1 гость