这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
Go基础语法
- go项目的运行命令为go run + .go文件
- 第一行写package main 在main包下 下面包括import 和 main函数
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
-
有下列几种变量命名方式
- var a = "string"
- var a string = "string"
- var a = true
- 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]
- 字符串格式化
- 字符串操作
- json处理
- 时间处理
- 数字处理