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. SQL Server中常用全局变量介绍

    在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值.全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数.下表就是SQL Server中一些常用的全局变量. 全局 ...

  2. Visual Studio 2017 发布 附带下载地址

    链接: https://pan.baidu.com/s/1kFjGwyj5HwabvmJKiyLF_g 提取码: 关注公众号[GitHubCN]回复获取    winform框架源码-Devexpre ...

  3. apache camel 条件路由

    <camelContext xmlns="http://camel.apache.org/schema/blueprint"> <route id="e ...

  4. 计算Python代码运行时间长度方法

    在代码中有时要计算某部分代码运行时间,便于分析. import time start = time.clock() run_function() end = time.clock() print st ...

  5. CentOS7的一些指令

    hostnamectl --static set-hostname yuanxu#永久修改主机名 systemctl stop firewalld.service #停止firewall system ...

  6. Hadoop整理五(基于Hadoop的数据仓库Hive)

    数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合.它是单个数据存储,出于分析性报告和决策支持目的而创建. 为需要业务智能的企业,提供指导业务流程改进.监视时间.成本.质量以及控 ...

  7. web到service简单原理例子

    这是目前的理解 附上服务端源码 package com.lsw.server; import java.io.*; import java.net.*; import java.util.HashMa ...

  8. 牛客练习赛3 E - 绝对半径2051

    链接:https://www.nowcoder.net/acm/contest/13/E来源:牛客网 题目描述

  9. button元素的id与onclick的函数名字相同 导致方法失效的问题

    需求需要在原先页面添加一个按钮,触发一个function,如此简单的操作,却无意间发现了一个问题.(还是对html了解的太少) 先看下在菜鸟教程的示例(错误代码) <!DOCTYPE html& ...

  10. [ 转载 ] Mysql 数据库常用命令

    完整的创建数据库例子: >create database db_test default character set utf8 collate utf8_general_ci; >use ...