GO 基础语法 简要总结|青训营笔记

206 阅读2分钟

++和--可看成运算符,且只有后加后减,不是表达式
一行代码无需分号
一行写多个代码就要分号(不建议)
{不能单独一行,if else中的else也要跟在}后面
函数func 支持多返回值,实际开发中基本上都是使用多返回值,类似于go中的访问map般,有个bool类型表示是否成功/存在,即返回函数出错的错误信息

fmt包

Printf
%d 十进制整数
%x, %o, %b 十六进制,八进制,二进制整数。
%f, %g, %e 浮点数: 3.141593 3.141592653589793 3.141593e+00
%t 布尔:true或false
%c 字符(rune) (Unicode码点)
%s 字符串
%q 带双引号的字符串"abc"或带单引号的字符'c'
%v 变量的自然形式(natural format)
%T 变量的类型
%% 字面上的百分号标志(无操作数)\

变量与常量

var 变量
const 常量

var a int = 5 //显式声明+初始化
var b = 5 //隐式 自动推断b的类型
c := 5 //函数内使用的简要声明
var d string = "hello"
var e string = d + "world"//内置字符串拼接

const s string = "me" //常量
const f = 5000 //常量

类c基础语法

if——else语句

简化了()
即 if 判断条件{
内容 }else{
内容
}

特别:
if c := 1;c >5 {
内容
}
分号前为执行语句,实际判断语句为分号后的c>5
for循环语句:

无while 及 do while
仅for循环\

for{
//死循环,可插入continue 或 break 退出
}
for ; ; {
//c语言的for
}
for 判断条件 {

}

switch 语句:

功能强大,甚至可以代替if else的使用,更加清晰(第二种)

a := 2
switch a {
case 1:
    ...
default :
    ...
}//默认带break 不用写
//类型没什么限制


switch{
case 判断:
    ...
default :
    ...
}

数组

var a [10]int//指定了长度的数组
实际上几乎不用
一般都是用切片

切片

可以用内置函数make()构建
即 s := make([]string,len)
s[0] = "h"
可以用内置函数append()扩容
即 s = append(s,"ss","nihao") 可以用copy()拷贝数据 copy(切片1,切片2)
//将切片2的数据拷贝到切片1
可以用字面值构建
s := []string{"ss","nih","ssa","0"}
fmt.Println(s[1:3])//类python 包前不包后 即中间两个

结构体

type name struct{

} 创建name对象时,可以类似于map般s := name{key:value,key:value }或按结构体成员的排列顺序直接写值value
可通过结构体加成员符 . 访问结构体成员,例如name.成员
或者通过指针加. 与上面的一样

map

哈希表,字典 s := make(map[type of key]type of value)
s := map[type of key]type of value{key:value}//字面量
value,ok = s[key]//多返回值

for range

一个被内部被特殊封装的for循环,用于迭代数组,切片,map,管道等 for index,value := range map{}