Go简明笔记

cooolr 于 2021-05-25 发布
package main

import "fmt"

func main() {
    fmt.Println("hello world")
}
# 运行
$ go run hello.go
hello world

# 编译后运行
$ go build hello.go
$ ./hello
hello world
# 格式化代码
gofmt -w hello.go

# 格式化import
goimports -w hello.go
bool      布尔    零值false

string    字符串  零值""

int       整数    零值0

float64   浮点数  零值0
//常量赋值
const Pi float32 = 3.14

//变量赋值
var text string = "hello"

//变量定义
var a,b,c int

//类型推导
var text = "hello"

//函数内短变量赋值
text := "hello"
sum := 0
for i:=0;i<10;i++ {
    sum += i
}
sum := 0
for sum < 10 {
    sum++
}
sum := 0
for {
    sum++
}
lists := []string{"lr", ".", "cool"}
for index,value := range lists {
    fmt.Println(index, value)
}
dicts := map[string]interface{}{"name": "lr", "age": 18}
for key,value := range dicts {
    fmt.Println(key, value)
}
sum := 0
if sum == 0 {
    sum++
} else {
    sum--
}
if sum:=0;sum == 0 {
    sum++
} else {
    sum--
}
switch sum:=0;sum {
case 0:
    sum++
case 10:
    sum = 0
default:
    sum--
}
sum:=0
switch {
case sum == 0:
    sum++
case sum == 10:
    sum = 0
default:
    sum--
}
func add(x int, y int) int {
	return x + y
}
func add(x, y int) int {
	return x + y
}
func swap(x, y string) (string, string) {
	return y, x
}
package main

import "fmt"

func main() {
	fmt.Println("counting")

	for i := 0; i < 10; i++ {
		defer fmt.Println(i)
	}

	fmt.Println("done")
}
// 定义一个指针类型的变量,零值为nil
**var p = *int**

// 生成一个指向其操作数的指针
i := 42
**p = &i**

// 通过指针指向的底层值修改参数
*p = 24

// &取变量的指针,*根据指针取变量
type Vertex struct {
	X int
	Y string
}

var v Vertex = Vertex{1, "2"}
var p *Vertex = &v

v.X =2

p.X = 3

var v2 = Vertex{Y:"ha"}

var a [10]int

primes := [5]int{2, 3, 5, 7, 11}

var s []int = primes[1:4]

s[0] = 555

r := []bool{true, true, false}

fmt.Println(s, len(s), cap(s))

b := make([]int, 0, 5)

c := append(a, 1)

for i, v := range c {fmt.Println(v)}