Планировщик Go
runtime.Gosched()
Предположим, у нас есть две горутины:
runtime.Gosched()
,Пример:
package main
import (
"fmt"
"runtime"
"time"
)
func main() {
go func() {
for i := 0; i < 10; i++ {
fmt.Println("Вычисления:", i)
runtime.Gosched() // Подсказка планировщику для переключения
}
}()
go func() {
for i := 0; i < 10; i++ {
fmt.Println("Печать текста:", i)
time.Sleep(10 * time.Millisecond)
}
}()
time.Sleep(1 * time.Second)
}
Горутины
runtime.Gosched()
.runtime.Gosched()
, Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
Синтаксическая конструкция ‘…’ в Go используется в нескольких контекстах, в частности для:
Синтаксис:
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
Когда вы хотите передать все элементы среза как
Синтаксис:
nums := []int{1, 2, 3, 4}
fmt.Println(sum(nums...)) // Вывод: 10
Когда необходимо создать массив,
x := [...]int{1, 2, 3}// Go определит длину массива автоматически
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
package main
import "fmt"
func main() {
x := 10
fmt.Println("Hello, World!")
}
Компилятор выдаст ошибку:
• Однако, если вы присваиваете возвращаемое значение переменной, но не используете эту переменную, компилятор сообщит о проблеме.
package main
import "errors"
func doSomething() (int, error) {
return 42, errors.New("an error occurred")
}
func main() {
doSomething() // Это допустимо
result, err := doSomething() //
}
Это вызовет ошибку, так как
result
и err
не используются• Когда вы импортируете пакет,
package main
import "math"
func main() {
// Ничего не делаем
}
Компилятор выдаст ошибку
❕Исключения
• Это правило не касается
package main
import "fmt"
var globalVar int
func greet(name string, age int) {
fmt.Println("Hello,", name)
}
func main() {
greet("Alice", 25)
fmt.Println("Hello, World!")
}
Глобальная переменная
globalVar
не используется,Please open Telegram to view this post
VIEW IN TELEGRAM