Go基础语法 | 青训营笔记

57 阅读2分钟

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

Go基础语法

  • go项目的运行命令为go run + .go文件

image.png

  • 第一行写package main 在main包下 下面包括import 和 main函数
package main

import "fmt"

func main() {
   fmt.Println("hello world")
}
  • 有下列几种变量命名方式

    1. var a = "string"
    2. var a string = "string"
    3. var a = true
    4. a := 123
package main

import "fmt"

func main() {
  var a = "initial"
  var b, c int = 1, 2
  var d = true
  var e float64
  f := float32(e)
  g := a + "foo"
  fmt.Println(a, b, c, d, e, f)
  fmt.Println(g)
  const abc = 50000

  fmt.Println(abc)
}
  • if - else 语句语法格式如下
package main

import "fmt"

func main() {
if 7%2 == 0 {
   fmt.Println("7是偶数")
} else {
   fmt.Println("7是奇数")
}
}
  • for循环结构如下
package main

import "fmt"

func main() {
   //死循环
   for {
      fmt.Println("loop")
      break
   }
   //普通循环
   for j := 7; j < 9; j++ {
      fmt.Println(j)
   }

}

go语言没有while循环和do-while循环

  • switch结构如下
switch atyp {
case atypIPV4:
   _, err = io.ReadFull(readder, buf)
   if err != nil {
      return fmt.Errorf("read type failed:%v", err)
   }
   addr = fmt.Sprintf("%d.%d.%d.%d", buf[0], buf[1], buf[2], buf[3])
case atypeHOST:
   hostsize, err := readder.ReadByte()
   if err != nil {
      return fmt.Errorf("read hostsize fialed:%v", err)
   }
   host := make([]byte, hostsize)
   _, err = io.ReadFull(readder, host)
   if err != nil {
      return fmt.Errorf("read host fialed:%v", err)
   }
   addr = string(host)
case atypeIPV6:
   return errors.New("not supported IPV6")
default:
   return errors.New("not supported")
}

go语言的switch结构不用写break,执行完一条case就立马结束switch,如果有多条if-else结构,建议用switch,go的switch可以是任意类型

  • 声明数组格式如下
var balance [10] float32
  • 初始化数组
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
  • go语言指针
package main  
  
import "fmt"  
  
func main() {  
   var a int = 10     
  
   fmt.Printf("变量的地址: %x\n", &a  )  
}
  • 函数定义
func function_name( [parameter list] ) [return_types] {
   函数体
}
  • 结构体定义

结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下

type struct_variable_type struct {
   member definition
   member definition
   ...
   member definition
}
  • 定义切片
s :=[] int {1,2,3 } 

直接初始化切片,[] 表示是切片类型, {1,2,3}  初始化值依次是 1,2,3,其 cap=len=3

s := arr[:] 

初始化切片 s,是数组 arr 的引用。

s := arr[startIndex:endIndex] 

将 arr 中从下标 startIndex 到 endIndex-1 下的元素创建为一个新的切片。

s := arr[startIndex:] 

默认 endIndex 时将表示一直到arr的最后一个元素。

s := arr[:endIndex] 
  • 字符串格式化

image.png

  • 字符串操作

image.png

  • json处理

image.png

  • 时间处理

image.png

  • 数字处理

image.png