golang примеры кода

Пользователь

Всем привет, начинаю изучать Golang. Скиньте пожалуйста примеры простеньких программ, которые даже я смогу понять со своим практически нулевым уровнем знания языка Golang.

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket
19 июня 2020 г., 11:25

Пользователь

Обычно самая первая программа программиста выводит в консоль классическую фразу “hello world”. Вот весь код программы.

package main
	 
import "fmt"

func main() {
  fmt.Println("hello world")
}
19 июня 2020 г., 11:43

Пользователь

Go, как и все ЯП, имеет различные типы данных, такие как строки, целые числа, числа с плавающей запятой, булев тип, и так далее. Вот несколько основных примеров.

	package main
	import "fmt"
	func main() {
	
	//Строки можно объединять с помощью +.
	   fmt.Println("go" + "lang")
	
	//Целые числа и числа с плавающей запятой.
	   fmt.Println("1+1 =", 1+1)
	   fmt.Println("7.0/3.0 =", 7.0/3.0)
	
	//Булев тип, как вы и ожидаете, с логическими операторами true или false.
	   fmt.Println(true && false)
	   fmt.Println(true || false)
	   fmt.Println(!true)
	}


19 июня 2020 г., 11:51

Пользователь

Ветвление с if и else в Go очень простое.

Вот простой пример.


	package main
	
	import "fmt"
	
	func main() {
	   if 7%2 == 0 {
	       fmt.Println("7 четное число")
	   } else {
	       fmt.Println("7 нечетное число")
	   }
	
	//У вас может быть условие if без else.
	   if 8%4 == 0 {
	       fmt.Println("8 делится на 4")
	   }
	
	//Оператор может предшествовать условию; любая переменная, объявленная в этом блоке, доступна во всех ветвлениях.
	   if num := 9; num < 0 {
	       fmt.Println(num, "отрицательное число")
	   } else if num < 10 {
	       fmt.Println(num, "состоит из 1 цифры")
	   } else {
	       fmt.Println(num, "состоит из нескольких цифр")
	   }
	}

//Обратите внимание, что вам не нужны скобки вокруг условий в Go, но фигурные скобки необходимы.


19 июня 2020 г., 12:05

Пользователь

Оператор switch предназначен для организации выбора из множества различных вариантов.

	package main
	import "fmt"
	import "time"
	func main() {
	 
	//Пример простого оператора switch.
	   i := 2
	   fmt.Print("write ", i, " as ")
	   switch i {
	   case 1:
	       fmt.Println("one")
	   case 2:
	       fmt.Println("two")
	   case 3:
	       fmt.Println("three")
	   }
	 
	//Вы можете использовать запятые для разделения нескольких выражений в одном операторе case. Также в этом примере мы используем необязательный оператор default.
	   switch time.Now().Weekday() {
	   case time.Saturday, time.Sunday:
	       fmt.Println("it's the weekend")
	   default:
	       fmt.Println("it's a weekday")
	   }
	 
	//switch без выражения - это альтернативный путь выразить логику if/else. В этом примере также показано, как case выражения могут быть не постоянными.
	   t := time.Now()
	   switch {
	   case t.Hour() < 12:
	       fmt.Println("it's before noon")
	   default:
	       fmt.Println("it's after noon")
	   }
	}


19 июня 2020 г., 12:21

Пользователь

For единственная конструкция для циклов в Go. Ниже приводится 3 базовых типа цикла for.

	package main
	import "fmt"
	func main() {
	
	//Самый базовый тип, с единственным условием.
	   i := 1
	   for i <= 3 {
	       fmt.Println(i)
	       i = i + 1
	   }
	
	//Классический цикл оператора for начальное значение/условие/постусловие.
	   for j := 7; j <= 9; j++ {
	       fmt.Println(j)
	   }
	
	//for без условия будет работать до тех пор, пока вы не примените break или return внутри функции.
	   for {
	       fmt.Println("loop")
	       break
	   }
	}


19 июня 2020 г., 12:34

Пользователь

Массив в языке Go — это нумерованная последовательность элементов одного типа, с фиксированной длинной.

package main

import "fmt"

func main() {

//В этом примере мы создали массив a, который будет содержать именно 5 элементов типа int. Тип данных и размер массива - обязательны при объявлении массива. По-умолчанию массив имеет нулевые значения элементов. Для int это 0.

   var a [5]int

   fmt.Println("emp:", a)

//Мы можем установить значение элемента в массиве, используя индекс array[index] = value. Получить значение элемента массива можно также array[index].

   a[4] = 100

   fmt.Println("set:", a)

   fmt.Println("get:", a[4])

//Встроенная функция len возвращает размер массива.

   fmt.Println("len:", len(a))

//Используйте такой синтаксис, чтобы объявить и инициализировать массив одной строкой.

   b := [5]int{1, 2, 3, 4, 5}

   fmt.Println("dcl:", b)

//Массив - это одномерный тип данных, но вы можете сделать массив многомерным сочетая несколько массивов.

   var twoD [2][3]int

   for i := 0; i < 2; i++ {

       for j := 0; j < 3; j++ {

           twoD[i][j] = i + j

       }

   }

   fmt.Println("2d: ", twoD)

}


19 июня 2020 г., 12:41

Пользователь

Срезы ключевой тип данных в Go, дающий более мощный интерфейс для работы с последовательностями, чем массивы.

package main

import "fmt"

func main() {

 

//Срез это часть массива. Как и массивы срезы индексируются и имеют длину. В отличии от массивов, их длину можно изменить. Для создания пустого среза с не нулевой длиной воспользуйтесь встроенной функцией make. В этом примере мы создали срез из строк с размером среза в 3 элемента (инициализированных нулевыми значениями).

 

   s := make([]string, 3)

   fmt.Println("emp:", s)

 

//Установка и чтение значений происходит точно также как в массиве.

 

   s[0] = "a"

   s[1] = "b"

   s[2] = "c"

   fmt.Println("set:", s)

   fmt.Println("get:", s[2])

 

//len возвращает размер среза.

 

   fmt.Println("len:", len(s))

 

//В дополнение к этим базовым функциям, срезы поддерживают несколько других функций которые делают их возможности гораздо шире чем у массивов. Одна из них - это append, которая возвращает срез содержащий 1 или более новых значений. Обратите внимание, что мы должны принять возвращаемое функцией append значение - таким образом мы получаем новое значение среза.

 

   s = append(s, "d")

   s = append(s, "e", "f")

   fmt.Println("apd:", s)

 

//Срезы можно копировать. В этом примере мы создали пустой срез c той же самой длины что и s и скопировали содержимое из s в c.

 

   c := make([]string, len(s))

   copy(c, s)

   fmt.Println("cpy:", c)

 

//Срезы поддерживают “slice”-оператор с синтаксисом slice[low:high]. Например, здесь мы получаем срез элементов s[2], s[3], и s[4].

 

   l := s[2:5]

   fmt.Println("sl1:", l)

 

//Здесь делается срез элементов от s[0] до s[5] (но исключая).

 

   l = s[:5]

   fmt.Println("sl2:", l)

 

//А это срез начиная с элемента s[2] (включительно) и до конца среза.

 

   l = s[2:]

   fmt.Println("sl3:", l)

 

//Мы можем объявить и инициализировать переменную для среза в одну строку.

 

   t := []string{"g", "h", "i"}

   fmt.Println("dcl:", t)

 

//Срезы могут быть составлены в многомерные структуры данных. В отличии от многомерных массивов, размер внутренних срезов может различаться.

 

   twoD := make([][]int, 3)

   for i := 0; i < 3; i++ {

       innerLen := i + 1

       twoD[i] = make([]int, innerLen)

       for j := 0; j < innerLen; j++ {

           twoD[i][j] = i + j

       }

   }

   fmt.Println("2d: ", twoD)

}


19 июня 2020 г., 12:48

Пользователь

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

	package main
	import "fmt"
	func main() {
	
	//var объявляет 1 или более переменных.
	
	   var a string = "initial"
	   fmt.Println(a)
	
	//Вы можете объявить несколько переменных за раз.
	
	   var b, c int = 1, 2
	   fmt.Println(b, c)
	
	//Go определит тип инициализированных переменных автоматически.
	
	   var d = true
	   fmt.Println(d)
	
	//Не инициализированные переменные имеют нулевое значение. Например нулевое значение для int это 0.
	
	   var e int
	   fmt.Println(e)
	
	//Синтаксис := это сокращение для объявления и инициализации переменной, например в этом примере var f string = "short".
	
	   f := "short"
	   fmt.Println(f)
	}


19 июня 2020 г., 12:54

Пользователь

Ого, спасибо ребят, очень много мне накидали всего разного. Пойду теперь разбираться со всем этим и пробовать самому писать код, основываясь на этих примерах.


19 июня 2020 г., 13:03

Пользователь

	package main
	import "fmt"
	func main() {
	 
	//В этом примере мы создали массив a, который будет содержать именно 5 элементов типа int. Тип данных и размер массива - обязательны при объявлении массива. По-умолчанию массив имеет нулевые значения элементов. Для int это 0.
	 
	   var a [5]int
	   fmt.Println("emp:", a)
	 
	//Мы можем установить значение элемента в массиве, используя индекс array[index] = value. Получить значение элемента массива можно также array[index].
	 
	   a[4] = 100
	   fmt.Println("set:", a)
	   fmt.Println("get:", a[4])
	 
	//Встроенная функция len возвращает размер массива.
	 
	   fmt.Println("len:", len(a))
	 
	//Используйте такой синтаксис, чтобы объявить и инициализировать массив одной строкой.
	 
	   b := [5]int{1, 2, 3, 4, 5}
	   fmt.Println("dcl:", b)
	 
	//Массив - это одномерный тип данных, но вы можете сделать массив многомерным сочетая несколько массивов.
	 
	   var twoD [2][3]int
	   for i := 0; i < 2; i++ {
	       for j := 0; j < 3; j++ {
	           twoD[i][j] = i + j
	       }
	   }
	   fmt.Println("2d: ", twoD)
	}


20 июня 2020 г., 8:43