五四青年节,那天下午没有回去,公司规定28岁之前,下午可以不上班.就顺便看了go语言,算是做个笔记.
因为下载go语言环境是个安装包,在安装之后配置一下系统环境(1.8不需要).记得最早安装是go1.5,还需要自己配置环境变量.在命令行测试一下.
如果看到和上图一样的效果,代表环境变量没有问题,其实也不会出现什么问题.
package main
import "fmt"
import "runtime"
import (
"net/http"
"time"
)
func main() {
fmt.Println("Hello World,Hello Go!")
}
4. 定义变量 (和c/c++/java/c#不同的),不需要每行结束以分号
package main
import (
"fmt"
)
func main() {
var i int
i = 1
var x, y int = 1, 2
num := 1
}
5. 定义常量
const world = "go"
6. 条件语句
j := 100
if j > 1 {
fmt.Println("j < 0")
} else {
fmt.Print("j > 0")
}
7. switch语句
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("mac os!")
case "linux":
fmt.Println("linux !")
default:
fmt.Println("%s!", os)
}
8. 循环语句
8.1 方式1
sum := 0
for i := 0; i <= 100; i++ {
sum += i
}
fmt.Println("sum is ", sum)
8.2 方式2
sum := 1
for sum < 1000 {
sum += sum
}
8.3 死循坏 (还是和其他语言很不同的)
for {
}
9. 使用结构体(go语言没有class,只有struct
type Student struct {
X int
Y int
}
func main() {
stu := Student{1, 10}
stu.X = 20
fmt.Println(stu)
}
10. go语言中可以使用指针,但指针不能进行运算
val := 100
pVal := &val
fmt.Println("指针pVal的值,", *pVal)
*pVal = 200
fmt.Println("pVal和val的值", *pVal, val)
11. 数组
var arr [2]string
arr[0] = "hello"
arr[1] = "go"
fmt.Println(arr[0], arr[1])
fmt.Println(arr)
arr2 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
fmt.Println("arr2 ==", arr2)
for i := 0; i < len(arr2); i++ {
fmt.Printf("arr[%d]=%d\n", i, arr2[i])
}
12. 切片
arr2 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
fmt.Println("arr2[:4]==", arr2[:4])
fmt.Println("arr2[1:4]==", arr2[1:4])
fmt.Println("arr2[4:]==", arr2[4:])
13. 字典
dic := make(map[string]int)
dic["userid"] = 100
dic["userinfo"] = 200
for key, val := range dic {
fmt.Printf("dic[%s]=%d\n", key, val)
}
14. 协程(重要)
package main
import (
"fmt"
"time"
)
func main() {
go say("go")
say("hello ")
}
func say(content string) {
for i := 0; i < 2; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Printf("%s%d\n", content, i)
}
}
15. channel 通道
package main
import (
"fmt"
)
func main() {
arr4 := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
go sum(arr4[:len(arr4)/2], c)
go sum(arr4[len(arr4)/2:], c)
x1, x2 := <-c, <-c
fmt.Println(x1, x2, x1+x2)
}
func sum(arr []int, c chan int) {
sum := 0
for _, v := range arr {
sum += v
}
c <- sum
}
结论
对go语言进行了简单的学习,还是有很多的收获.