golang只有25个关键字

package: 定义包名, go中任何一个文件必须有一个package, 一般而言,package的定义和文件所属文件夹一致, 并且main函数所在文件的package必须是main

import: 导入包名的关键字

const: 声明常量的关键字

var: 声明变量的关键字

func: 定义函数关键字(结构体方法其本质也是函数)

defer: 延迟执行(先注册后执行)关键字(常用于保证资源的释放). defer后面必须是函数或者方法的调用.osExit()主动调用时,defer不再执行.最好不要对有名返回值操作.

go: 并发关键字

return: 函数返回

struct: 定义结构体

interface: 定义接口(所有变量都实现空接口)

map: 声明创建map类型关键字

chan: 声明创建chan类型关键字

以及一些控制流程的关键字

if, else, for, range, break, continue

swich, select, case, fallthrough, default

type: 这个关键字非常常用, 定义结构体,类型等

goto: 跳转语句关键字

if else: 控制结构

//-----------------------------------------------------------------------------------------------------------------

package main

import (
"fmt"
"time"
) var testVar1 = 0 //自动识别类型
var testChanVar chan *user const (
testIota1 int = iota //初始化为0
testIota2 //不写表达式 视为上一个表达式, 等价于 testIota2 int = iota
testIota3 int = 9
testIota4
testIota5 int = iota //iota只有出了所属的const() 才重置为0
) type user struct {
name string
age int
} func testMap() {
fmt.Printf("this is testMap...\n")
tMap := make(map[string]interface{}, 4) //value的类型是空接口类型, 所有类型都实现了空接口, 所以value的值可以是任意类型.
tMap["name"] = "xzk"
tMap["age"] = 25
for key, value := range tMap {
fmt.Printf("key=%v, value=%v\n", key, value) //无序, 每次打印的顺序不一样
switch key { //switch 后可以没有变量, 那么case可以是表达式,相当于if else
case "name":
fmt.Printf("this is swith case name...\n")
fallthrough //上一个case命中后, 强制执行下一个case(不管一下个case是否命中)
case "fallthrough":
fmt.Printf("this is fallthrough...\n")
default:
fmt.Printf("this is default...\n")
}
}
} func pushChan() {
fmt.Printf("this is pushChan...\n")
userBean := &user{
name: "xzk",
age: 18,
} select {
case testChanVar <- userBean: //如果通道未满, 将数据放入通道
default:
fmt.Printf("testChanVar chan overflow, size=%d, data=%v\n", cap(testChanVar), userBean)
}
} func getChanData() {
fmt.Printf("this is getChanData start...\n")
testChanVar = make(chan *user, 1000) //初始化大小为1000的通道
for userBean := range testChanVar { //遍历通道, 取出数据
fmt.Printf("this is getChanData..., userBeanName=%s\n", userBean.name)
}
} func init() {
go getChanData() //异步执行getChanData()函数
fmt.Printf("this is init end...\n")
} func main() {
fmt.Printf("this is main start...\n")
defer fmt.Printf("this is defer...\n") //多个defer执行顺序:先进后出
// 使用时需要注意 引用变量和值变量 的区别(return语句实际上也是分2个步骤. 1:设置返回值, 2:真正的return. defer是在中间执行) go pushChan() go testMap() for {
fmt.Printf("this is main...%d\n", testIota5)
time.Sleep(time.Second)
testVar1++
if testVar1 == testIota5 {
break
}
} fmt.Printf("this is main end...\n") //main函数退出, go异步线程随之结束
}

//------------控制台打印结果---------------------------------------

this is init end...
this is getChanData start...
this is main start...
this is pushChan...
this is main...4
this is getChanData..., userBeanName=xzk
this is testMap...
key=age, value=25
this is default...
key=name, value=xzk
this is swith case name...
this is fallthrough...
this is main...4
this is main...4
this is main...4
this is main end...
this is defer...

golang 关键字以及简单用法说明的更多相关文章

  1. golang build 的简单用法.(菜鸟初学)

    1. golang 里面的 go build 可以编译代码. go build helloworld.go 2. 这里面有一个注意事项事项. 如果引用非go语言的 内置package的话 需要在环境变 ...

  2. 数据结构和算法(Golang实现)(6)简单入门Golang-并发、协程和信道

    并发.协程和信道 Golang语言提供了go关键字,以及名为chan的数据类型,以及一些标准库的并发锁等,我们将会简单介绍一下并发的一些概念,然后学习这些Golang特征知识. 一.并发介绍 我们写程 ...

  3. Func和Action委托简单用法

    Func和Action类是特殊的类型,它们允许你在不必指定自定义委托类型的情况下,去使用委托.在整个.NET框架中都可以使用它们.例如,在我们考察并行计算时,你也会看到这两个类的示例. 上面一段文字是 ...

  4. slf4j的简单用法以及与log4j的区别

    之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...

  5. 【转】SQL 常用关键字释义和用法

    转自: http://blog.csdn.net/iamwangch/article/details/8093933     下面 是 从网络上整理 出来的 SQL 关键字和 常用函数的 释义和简单用 ...

  6. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  7. WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...

  8. 数据结构和算法(Golang实现)(2)简单入门Golang-包、变量和函数

    包.变量和函数 一.举个例子 现在我们来建立一个完整的程序main.go: // Golang程序入口的包名必须为 main package main // import "golang&q ...

  9. 数据结构和算法(Golang实现)(4)简单入门Golang-结构体和方法

    结构体和方法 一.值,指针和引用 我们现在有一段程序: package main import "fmt" func main() { // a,b 是一个值 a := 5 b : ...

随机推荐

  1. 关于主键的设计、primary key

    主键:用于唯一标识一个表中一行数据. 外键:用于建立两个表之间的关系,A表中有一列是B表中的主键,那么A表中这列的数据就受到B表主键的约束. 那么关于主键应该如何设计呢,这里我说下优缺点: 1.用自动 ...

  2. 浏览器开启web通知。

    https://www.cnblogs.com/xcsn/p/7767092.html

  3. 【AtCoder】AGC011 C - Squared Graph

    题解 大意是给出一张图,然后建一张新图,新图的点标号是(a,b) 如果a和c有一条边,b和d有一条边,那么(a,b)和(c,d)之间有一条边 我们把这道题当成这道题来做,给出两张图,如果第一张图有边( ...

  4. 【POJ】1740.A New Stone Game

    题解 想去学习一下博弈论的SG函数 不过貌似这道题就是猜结论并且证明 题意是,随便选择一堆石子,扔掉至少一个,然后从扔石子的这堆里选择任意多(可以不选)放到其他任意多的未选择完的石堆里 一堆石子,先手 ...

  5. bzoj 1820 dp

    最普通dp要4维,因为肯定有一个在上一个的位置,所以可以变为3维,然后滚动数组优化一下. #include<bits/stdc++.h> #define LL long long #def ...

  6. python之web框架(3):WSGI之web应用完善

    python之web框架(3):WSGI之web应用完善 1.上篇的web框架太low,只能实现回应固定页面.现在将它进行完善.首先将wsgi和web服务器进行分离,并给予它回复静态页面的能力. we ...

  7. HDU 1028 HDU 1398 (母函数)

    题意:输入一个n  给出其所有组合数 如: 4 = 4;  4 = 3 + 1;  4 = 2 + 2;  4 = 2 + 1 + 1;  4 = 1 + 1 + 1 + 1; 重复不算 母函数入门题 ...

  8. Vue.js中 watch 的高级用法

    假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type=&q ...

  9. 10 Best jQuery and HTML5 WYSIWYG Plugins

    https://www.sitepoint.com/10-best-html-wysiwyg-plugins/

  10. jupyter notebook 小技巧

    Converting notebooks to other formats¶ !pip install https://github.com/ipython-contrib/jupyter_contr ...