Основные команды и VSCode
Необходимо создать директорию для Go-окружения и добавить путь к ней в переменные среды.
$ go mod init my-app
$ go run main.go
$ go build -o my.exe main.go
$ go get -t github.com/...
Точка входа в приложение:
func main() {
}
var a int8, uint8
var b int16, uint16
var c int32, uint32
var d int64, uint64
var e byte
var f rune
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"
Инициализация переменных:
var name string
var name string = "Dmitry"
name := "Dmitry"
var (
name = "Dmitry"
age = 32
)
var name, age = "Dmitry", 32
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
}
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
}
Срезы не имеют фиксированной длины. Слайсы не хранят данные, а ссылаются на массив.
var a[2]string
a[0] = "hello"
a[1] = "world"
nmbers := [...]int{1, 2, 3}
letters := []string{"a", "b", "c"}
createSlice := make([]string, 3)
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
sum := 0
for ; sum < 1000 {
sum += 10
}
sum := 0
for sum < 1000 {
sum += 10
}
if a < 1000 {
}
else if {
}
else {
}
if i := isTest(): i == 1 {
}
switch i {
case 1:
case 2:
case 3:
default:
}
switch i := isTest() {
}
switch {
case i == 1:
case i == 2:
}
func main() {
defer fmt.Println("world")
fmt.Println("Hello")
}
a := "hellow world"
p := &a
fmt.Printlt(*p)
*p = "new string"
fmt.Printlt(*p)
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))
}
Итератор range. Структура map
func test6() {
arr := []string{"a", "b", "c"}
for i, l := range arr {
fmt.Println(i, l)
}
}
func test7() {
pointMap := map[string]Point{}
pointMap["a"] = Point{
X: 1,
Y: 2,
}
fmt.Println(pointMap)
fmt.Println(pointMap["a"])
}