TelenkovDmitry 1 ano atrás
pai
commit
c560761fb7
2 arquivos alterados com 211 adições e 6 exclusões
  1. 19 6
      .obsidian/workspace.json
  2. 192 0
      Golang/common.md

+ 19 - 6
.obsidian/workspace.json

@@ -18,8 +18,21 @@
                 "source": false
               }
             }
+          },
+          {
+            "id": "597430a081946c44",
+            "type": "leaf",
+            "state": {
+              "type": "markdown",
+              "state": {
+                "file": "Golang/common.md",
+                "mode": "source",
+                "source": false
+              }
+            }
           }
-        ]
+        ],
+        "currentTab": 1
       }
     ],
     "direction": "vertical"
@@ -85,7 +98,7 @@
             "state": {
               "type": "backlink",
               "state": {
-                "file": "linux/linux common.md",
+                "file": "Golang/common.md",
                 "collapseAll": false,
                 "extraContext": false,
                 "sortOrder": "alphabetical",
@@ -124,14 +137,16 @@
       "markdown-importer:Open format converter": false
     }
   },
-  "active": "505cb94d026dfa4c",
+  "active": "597430a081946c44",
   "lastOpenFiles": [
+    "linux/linux common.md",
+    "Golang/common.md",
+    "Golang",
     "Счета.md",
     "TODO.md",
     "bt67xx/common.md",
     "BT7000/BT-7000 Artery.md",
     "Тренировки и занятия.md",
-    "linux/linux common.md",
     "Список литературы.md",
     "Кодинг.md",
     "universal IO/universal IO.md",
@@ -156,12 +171,10 @@
     "docs/Galleon II Galleon III 3 phase V02.pdf",
     "bt67xx/Документы.md",
     "docs/Galleon II-33-10K-60K-Rack_DS.PDF",
-    "docs/Galleon II 3phase 10-40K UM.PDF",
     "2024-01-18.md",
     "metrolog/IRQ + FreeRTOS.md",
     "links.md",
     "linux/Tmux.md",
-    "linux/Raspberry PI.md",
     "img/sch04.JPG"
   ]
 }

+ 192 - 0
Golang/common.md

@@ -0,0 +1,192 @@
+<h6>Основные команды и VSCode</h6>
+Необходимо создать директорию для Go-окружения и добавить путь к ней в переменные среды.
+```go
+$ go mode init my-app // создание файла go.mod для отладки и запуска
+$ go run main.go // запуск приложения
+$ go build -o my.exe main.go // создание исполняемого файла
+```
+<h6>Точка входа в приложение:</h6>
+```go
+func main() {
+}
+```
+<h6>Типы данных:</h6>
+```go
+var a int8, uint8
+var b int16, uint16
+var c int32, uint32
+var d int64, uint64
+var e byte // = uint8
+var f rune // int32
+var j int //
+var k uint
+var a float32 
+var b float64
+var x complex64
+var x complex128
+
+var x bool = true
+var x bool = false
+
+var name string = "Dmitry"
+```
+<h6>Инициализация переменных:</h6>
+```go
+var name string
+var name string = "Dmitry"
+name := "Dmitry"
+
+var (
+	name = "Dmitry"
+	age = 32
+)
+
+var name, age = "Dmitry", 32
+```
+<h6>Функции:</h6>
+```go
+// Функция может возвращать несколько значений
+func test() (string, string) {
+	a := "hello"
+	b := "world"
+	return a, b
+}
+
+// Именные выходные параметры
+// В данном случае выходные переменные уже проинициализированы
+// Можно просто присваивать значения
+func test() (a string, b string) {
+	a = "hello"
+	b = "world"
+	return a, b
+}
+
+
+// Получить значения
+s1, s2 := test()
+
+// Или одно
+func test() string {
+	return "empty"
+}
+
+// Передать функцию как параметр
+func test(callback func(int, int) int, s string) int {
+	result := callback(5, 1)
+	fmt.Println(s)
+	return result
+}
+```
+<h6>Структуры</h6>
+```go
+type Point struct {
+	X int
+	Y int
+}
+
+p := Point {
+	X: 1,
+	Y: 2,
+}
+
+p.X = 123
+
+// добавить метод к структуре
+func (p *Point) movePointPtr(x, y int) {
+	p.X += x
+	p.Y += y
+}
+```
+<h6>Циклы</h6>
+```go
+// Обычная запись
+sum := 0
+for i := 0; i < 10; i++ {
+	sum += i
+}
+
+// Цикл с условием
+sum := 0
+for ; sum < 1000 {
+	sum += 10
+}
+
+// Более короткая запись
+sum := 0
+for sum < 1000 {
+	sum += 10
+}
+```
+<h6>Ветвление</h6>
+```go
+if a < 1000 {
+
+}
+else if {
+
+}
+else {
+
+}
+
+// Сокращенная запись
+if i := isTest(): i == 1 {
+
+}
+
+//
+switch i {
+case 1:
+
+case 2:
+
+case 3:
+
+default:
+
+}
+
+// Короткая запись
+switch i := isTest() {
+}
+
+// switch можно записать без условия
+switch {
+case i == 1: // true/false
+case i == 2:
+}
+```
+<h6>Отложенное выполнение</h6>
+```go
+// несколько defer выполняются по принципу стека
+func main() {
+	defer fmt.Println("world") // Вызвов будет после
+	fmt.Println("Hello")
+}
+```
+<h6>Ссылки и указатели</h6>
+```go
+a := "hellow world"
+p := &a // ссылка
+fmt.Printlt(*p) // * получить значение (hello world)
+*p = "new string"
+fmt.Printlt(*p) // * получить значение (new string)
+```
+<h6>Замыкание</h6>
+```go
+func totalPrice(initPrice int) func(int) int {
+	sum := initPrice
+	return func(x int) int {
+		sum += x
+		return sum
+	}
+}
+
+func main() {
+	orderPrice := totalPrice(1)
+	fmt.Println(orderPrice(1))
+	fmt.Println(orderPrice(1))
+	fmt.Println(orderPrice(1))
+	fmt.Println(orderPrice(1))
+}
+```