大家一起学Golang——Go语言关键字与基本语法

大家一起学Golang——Go语言关键字与基本语法

Golang25个关键字
关键字作用一级分类二级分类三级分类
var变量声明基本结构变量与常量
const常量声明基本结构变量与常量-
package包声明基本结构包管理-
import包引用基本结构包管理-
func函数声明基本组件函数-
return函数返回基本组件函数-
interface接口基本组件自定义类型-
struct结构体基本组件自定义类型-
type定义类型基本组件自定义类型-
map-基本组件引用类型-
range-基本组件引用类型-
go-流程控制并发-
select-流程控制并发-
chan-流程控制并发-
if-流程控制单任务流程控制单分支流程
else-流程控制单任务流程控制单分支流程
switch-流程控制单任务流程控制多分支流程
case-流程控制单任务流程控制多分流程
default-流程控制单任务流程控制多分支流程
fallthrough-流程控制但任务流程控制多分支流程
for-流程控制单任务流程控制循环控制
break-流程控制单任务流程控制循环控制
continue-流程控制单任务流程控制循环控制
goto-流程控制单任务流程控制-
defer-流程控制延时流程控制-

上面时关于go的关键词其实还是挺少的,不用全看,只看自己不熟悉的,python我平常用的比较多,很喜欢这两个小巧的语言,这里附上go与python语法区别的链接go vs python 大家一起go浪~~

关键字使用方式
  • var
var aa int
var bb = 15
cc := 15
dd,ee := "a","b"
  • const
//声明常量,可以不用声明类型
//全局常量
const a = 13

func main(){
    var b = 1
    var c = int64(20)
    d := a+b
    e := a + c
   ...
}
  • package
    包声明,是指同一文件夹下的文件,包名可以与文件夹名字不同(建议相同)

  • import
    包引用,引用路径是工作区的相对路径。若程序内引用两个不同路径下的相同包名,需要设置别名加以区分。包若是没有在程序中显示调用,则使用下划线 _ 来区分。

  • func
    关于匿名函数必须在函数内部定义,下面时关于函数的几种情况

//根据函数传入参数和返回参数不同进行划分
//有固定⼊参,⽆出参数
func demo1(name string) {
    return
}
//⽆固定入参,无出参数
func demo2(name string, params ...int64) {
    return
}
//无入参,单参数无名称
func demo3() int64 {
    return 0
}
//⽆入参,单参数有名称
func demo4() (age int64) {
    return
}
//⽆入参,多参数无名称
func demo5() (int64,string) {
    return 0,""
}
//⽆入参,多参数有名称
func demo6() (age int64,name string) {
    return
}
  • type/interface/struct
    type声明结构体或者接口
    interface 可以存放任意格式数据和接口定义方法
    struct 结构体定义
import "fmt"

type demo interface{
    func1 (string) int
    func2 (int64) string
}

type demoS struct{}

//demoS的方法,demoS实现了demo接口类型
func(d *demo) func1(string)int{
    return 0
}
func(d *demo) func2(int64)string{
    return ""
}
func demofun(d demoI){
    //d是接口值,这个类型断言检查参数d是否是demoS类型,
    v,t := d.(*demoS)  //又将d转成demoS类型
    fmt.Println(v,t)
}
func main(){
    s := &demoS{}
    demofun(s)
}
  • map
//map是go内置的数据类型 
//下面声明了m1类型,但没有分配内存空间,直接调用会报错
var m1 map[string]int 
//声明并申请了内存空间
m2 := make(map[string]int)
v, ok := m2["k"] //读取时返回值
//这个初始化同时并规定分配的空间大小
m3 := make(map[string]int,10)
  • range
    一般和for配合使用(这个在python中也常见),用来遍历数组,map,string。用起来好方便

  • go
    go语言中自带的并发语句,但不建议处理大文件和cpu密集型运算,可以在写日志和处理大量IO操作使用。

  • select
    每个case后只能进行IO通信操作,只能是发送或接收。
    多个case,go会随机选择并执行,否则select阻塞直到有满足条件的case。
    在 Go 中,每执行完一个 case 后,会从 switch 语句中跳出来,不再做后续 case 的判断和执行。使用 fallthrough 语句可以在已经执行完成的 case 之后,把控制权转移到下一个 case 的执行代码中

  • chan

var c1 chan int64 //nil chan
var c2 = make(chan int64)  //无缓冲
var c3 = make(chan int64, 10) //带缓冲区,chan满时,发生阻塞
var c3 = make(chan <-int64, 10) //只写,这是具有方向的channel
var c3 = make(<-chan int64, 10) //只读
  • for
    循环控制语句, go中没有while语法,下面for循环的三种形式。
for i,v := range slice{
    ...
}
for k,v := range slice{
    ...
}
for index :=1; index < len(slice); index++{
    ...
}
  • goto
    无条件跳转,几乎没什么用,学过汇编的朋友应该熟悉这个。
Loop:
    ...
goto Loop
  • defer
    这个又是go语言中比较有特色的语法,只能用在函数中,在函数执行结束时会调用这个语句,一般作善后工作,比如关闭文件,关闭数据库连接等。用过的人,真香~~
func main(){
    defer fmt.Println("aa")
    defer fmt.Println("bb")
    //结果输出bb  aa ,这个时函数调用的时候这些语句被压入栈中,调用的时候出栈,所以就这个顺序
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值