Go语言基础 - 基础语法 | 青训营笔记

385 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第1天

简介

Go语言优势:

  1. 高性能、高并发
  2. 语法简单
  3. 标准库丰富
  4. 完善的工具链
  5. 静态链接
  6. 快速编译
  7. 跨平台【多平台】
  8. 垃圾回收【与java虚拟机类似的设定】

基础语法

变量声明

var t = 1
tt := 2
const con = 111
// Go语言中没有隐式类型转换,使用时需要用显式类型转换

for/if-else:少了个(),且没有while循环

switch:不需要break

数组声明:类型声明的位置变了

one := [5]int{1, 2, 3, 4, 5}
var two [2][3]int

slice:可变数组

good := []string{"g", "o", "o", "d"}
t := make([]string, 3)

t = append(t,"4")

map:

//通过这种方法可确定值是否存在
r, ok := m["unknow"]
fmt.Println(r, ok) // 0 false

range:将容器内容全部访问一遍

m := map[string]string{"a": "A", "b": "B"}
for k, v := range m {
   fmt.Println(k, v) 
}
for k := range m {
   fmt.Println("key", k) 
}

函数:func声明,参数类型之后才是返回类型

func exists(m map[string]string, k string) (v string, ok bool) {
   v, ok = m[k]
   return v, ok
}
//多返回值最常用于返回error错误信息
func dlv(a int, b int) (int, error) {
    if b < 0 {
        return 0, errors.New("b<0") 
    } 
    return a/b, nil 
}

指针:类似于C++ 结构体:

type user struct {
   name string
   age int
}

//结构体函数
func (u user) check(rage int) bool {
   return u.age == age
}

字符串/时间相关函数:大体与java类似【具体可参考相关文档】

a := "hello"
fmt.Println(strings.Contains(a, "ll"))    // true

总结

1.通过本次课程我较快地学习了go的基础语法与函数使用,结合课前所提供的资料,更好地理解了课程内容。

2.后面的实例也对之前学习的基础语法进行了个小总结,其中拓展了不少知识点,这些都在课后进行了查漏补缺,其中针对proxy实例进行了重现,在一步步的添加中理解了思路来源。