网站首页 文章专栏 go语言基本语法
go语言基本语法
创建于:2020-10-21 06:43:09 更新于:2024-04-19 23:41:05 羽瀚尘 750
Go go, 语法

变量

使用var定义变量,
变量类型
布尔 bool
整型 int8 byte int16 int uint uintptr
浮点类型 float32 float64
复数类型 complex64 complex128
字符串 string
字符类型 rune
错误类型 error

复合类型
指针 pointer
数组 array
切片 slice
字典 map
通道 chan
结构体 struct
接口 interface

// 一般形式
// var 变量名 变量类型
// 注意不需要分号
var v1 int
var v2 string
var v3 [10]int // 数组
var v4 []int // 数组切片
var v5 struct {
f int
}
var v6 *int // 指针
var v7 map[string]int // map,key为string类型,value为int类型
var v8 func(a int) int

初始化

var v1 int = 10 // 正确的使用方式1
var v2 = 10 // 正确的使用方式2,编译器可以自动推导出v2的类型
v3 := 10 // 正确的使用方式3,编译器可以自动推导出v3的类型

常量

使用const关键字

const Pi float64 = 3.14159265358979323846

逻辑运算

算术运算

流程控制

if

if a < 5 {
    return 0
} else {
    return 1
}

要点:

  1. 条件语句不需要使用括号将条件包含起来();
  2. 无论语句体内有几条语句,花括号{}都是必须存在的;
  3. 左花括号{必须与if或者else处于同一行;
  4. 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔;
  5. 在有返回值的函数中,不允许将“最终的”return语句包含在if…else…结构中,

否则会编译失败:

switch

switch i {
    case 0:
        fmt.Printf("0")
    case 1:
        fmt.Printf("1")
    case 2:
        fallthrough
    case 3:
        fmt.Printf("3")
    case 4, 5, 6:
        fmt.Printf("4, 5, 6")
    default:
        fmt.Printf("Default")
}

要点:

  1. 左花括号{必须与switch处于同一行;
  2. 条件表达式不限制为常量或者整数;
  3. 单个case中,可以出现多个结果选项;
  4. 与C语言等规则相反,Go语言不需要用break来明确退出一个case;
  5. 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case;
  6. 可以不设定switch之后的条件表达式,在此种情况下,整个switch结构与多个

if…else…的逻辑作用等同。

for

sum := 0
for i := 0; i < 10; i++ {
    sum += i
}

要点:

  1. 左花括号{必须与for处于同一行。
  2. Go语言中的for循环与C语言一样,都允许在循环条件中定义和初始化变量,唯一的区别

是,Go语言不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多
个变量。

  1. Go语言的for循环同样支持continue和break来控制循环,但是它提供了一个更高级的

break,可以选择中断哪一个循环

函数

package mymath
import "errors"
func Add(a int, b int) (ret int, err error) {
    if a < 0 || b < 0 { // 假设这个函数只支持两个非负数字的加法
        err= errors.New("Should be non-negative numbers!")
        return
    }
    return a + b, nil // 支持多重返回值
}

要点:

  1. 小写字幕开头的函数只在本包内可见,大写字母开头的函数才能被其他包使用

    作用域

    多文件

    面向对象编程