Skip to content

Instantly share code, notes, and snippets.

@paveltimofeev
Created October 5, 2015 11:05
Show Gist options
  • Save paveltimofeev/ffa9ec7710eeab3a8e6c to your computer and use it in GitHub Desktop.
Save paveltimofeev/ffa9ec7710eeab3a8e6c to your computer and use it in GitHub Desktop.
Go tests
package main
import "fmt"
import "os"
//import "time"
// объявление типа
var text3 uint = 1
// объявление константы
const pi int = 3
// объявление неск. переменных
var (
t1 = "text"
t2 = "message"
t3 = "commentary"
)
const (
G = 9.8
G1 = "10"
)
func main() {
var text string = "zzz"
var count int = len(text)
fmt.Println(text[0], count * pi)
text2 := "xxx"
fmt.Println(text2)
arrayExample()
sumExample(1,2,3)
sumExample(2,4,8,16,32)
panicExample()
}
func arrayExample(){
// create array
var a [5]float64
for i:=0; i< len(a) ;i++ {
a[i] = float64(i)
}
for _, val := range a {
fmt.Println("item:", val)
}
// create array
a2 := [5]int{ 1, 2, 3, 5, 8 }
printArray(a2)
// создание среза
cut1 := make([]int, 5)
printSrez(cut1)
// создание среза
cut2 := make([]int, 5, 10)
printSrez(cut2)
// создание среза из массива
cut3 := a2[1:3]
printSrez(cut3)
cut4 := a2[:3]
printSrez(cut4)
cut5 := a2[3:]
printSrez(cut5)
cut6 := a2[:]
//cut6 := a2[:len(a2)] // the same
printSrez(cut6)
// создание словаря
map1 := make(map[string]float32)
map1["USD"] = 50.0
map1["EUR"] = 60.0
map1["EURO"] = 60.0
// создание словаря с ининциализацией значений
map2 := map[string]float32{
"EUR/USD": 1.33,
"USD/EUR": 0.85,
}
// удаление элемента
delete(map1, "EURO")
// получение элемента с проверкой на наличие
val, success := map1["EURO"]
if !success {
fmt.Println("Element EURO was deleted successfully")
}else{
fmt.Println("Element EURO =", val)
}
if v, ok := map1["EUR"]; ok {
fmt.Println("Element EUR =", v)
}
printMap(map1)
printMap(map2)
}
func printArray(a [5]int){
fmt.Println("-array:")
for _, val := range a {
fmt.Println("item:", val)
}
fmt.Println("")
}
func printSrez(a []int){
fmt.Println("-srez:")
for _, val := range a {
fmt.Println("item:", val)
}
fmt.Println("")
}
func printMap(m map[string]float32){
for key, val := range m {
fmt.Println(key, val)
}
}
// функция, принимающяя несколько аргументов
func sumExample(args ...int) int{
var result int = 0
for _,a := range args {
result += a
fmt.Println(a, "=>", result)
}
fmt.Println("Total =", result)
return result
}
// функция возвращяющая несколько значений
func readInput(msg string) (inpt string, success bool){
fmt.Println(msg)
fmt.Scanf("%s", &inpt)
success = inpt != ""
return inpt, success
}
// отложенные функции
func deferExample(){
file,_ := os.Open("test.go")
defer file.Close()
// файл закроется при выходе из deferExample(),
// даже если произойдёт исключение
// даже если в функции несколько return'ов
// ниже могут идти операции с file
}
// panic & recover, исключение и его перехват
func panicExample(){
// отложенный вызов анонимной функции
defer func() {
str := recover() // восстановление, возвращает сообщение panic
fmt.Println("Panic:", str)
}()
// выброс исключения, прерывание программы, но отложенная функция
// всё равно должна отработать
panic("Exception!")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment