Golang之特殊关键字的使用

摘要

Golang中存在一些特殊的关键字,这些关键字在程序编写过程中可能有助于解决一些必要的问题,本文列出了一些特殊关键字的使用说明。

实体申明和定义

  • const关键字
    const的作用是申明一个只读常量

一般性定义

const(
	prepare Type = Value
)

或者

const(
	prepare = Value
)

自增长量iota在const定义中的使用

下列常量行为

const (
	prepare msgtype = iota
	commit
)

等价于

const (
	prepare msgtype = 0
	commit  msgtype = 1
)
  • interface 申明一个接口

接口用于接收具有指定方法的变量或者结构体,具体定义如下

type name inferface{
	method1
	method2
	....
	method3
}
  • chan 申明一个通道

申明一个传输消息的通道,该通道主要是在协程之间传输消息。

a:=make(chan 类型,缓存大小)
a:=make(chan 类型) //没有缓存区的通道
b:=make(chan 类型,n)//带有大小为n的缓存区的通道
  • go创建一个协程
func TestFunction(t *testing.T){
	wg:=&sync.WaitGroup{}
	wg.Add(1)
	go func (){
		defer wg.Done()
		log.Println("Coroutine1")
	}()
	wg.Add(1)
	go func (){
		defer wg.Done()
		log.Println("Coroutine2")
	}()
	wg.Add(1)
	go func (){
		defer wg.Done()
		log.Println("Coroutine3")
	}()
	log.Println("primary corotine")
	wg.Wait()
}

查看结果:
在这里插入图片描述

流程控制关键字

  • goto 跳转关键字

goto关键字在配合标签的情况下,可以直接跳转到标签层,继续执行指令,具体代码如下

func TestFunction(t *testing.T){
label:
	for i:=0;i<4;i++{
		log.Println("die dai",i,":")
		for j:=0;j<5;j++{
			log.Println(i+j)
			if i+j==8{
				goto label;
			}
		}
	}
	log.Println("continue")
}
  • select 关键字

配合通道实现从协程中接收到消息的判定。

func TestFunction(t *testing.T){
	wg:=&sync.WaitGroup{}
	ch1:=make(chan int)
	ch2:=make(chan bool)
	wg.Add(1)
	go func(){
		defer wg.Done()
		for {
			select {
			case s:=<-ch1:
				log.Println(s)
			case <-ch2:
				break;
				default:
					log.Println("continue")
			}
		}
	}()
	ch1<-1
	time.Sleep(1*time.Second)
	ch2<-true
	wg.Wait()
}
  • defer 程序退出前执行指令
func TestFunction(t *testing.T){
	defer log.Println("Hello3")
	log.Println("Hello1")
	log.Println("Hello2")
}

执行结果是:
在这里插入图片描述

  • fallthrough

配合switch选择语句,在执行完某个case后不退出,继续执行后面的case语句。

func TestFunction(t *testing.T){
	var t1 bool=false
	switch {
	case t1==false:
		log.Println("t1",false)
		fallthrough
	case t1==true:
		log.Println("t1",true)
		fallthrough
	case t1==false:
		log.Println("t1",false)
	}
}

执行结果如下:
在这里插入图片描述

结论

以上就是我对Golang中的一些特殊关键字的总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值